五、横向对比

排序

# 列表
a.sort() # 修改原列表,返回值为None!!!!!这里很容易出错
sorted(a) # 生成新的列表 # 嵌套列表的排序(若是对字典排序,需先用list()转成列表形式)
li = [['A', 90], ['B', 20], ['C', 50]]
# 利用sorted()函数中的key属性重新建立排序规则
li = sorted(li, key=lambda x: x[1], reverse=True) # numpy
#numpy.sort()函数返回输入数组的排序副本
#numpy.sort(a, axis, kind, order)
#axis: 沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序, axis=0 按列排序,axis=1 按行排序
#kind: 默认为'quicksort'(快速排序)
#order: 如果数组包含字段,则是要排序的字段
a = np.array([[3, 7], [9, 1]])
print('原数组:')
print(a)
print('调用sort() 函数:')
print(np.sort(a))
print('按列排序:')
print(np.sort(a, axis=0)) # 注意这两种排序结果的区别
print(sorted([[1,2,3],[0,1,1],[2,0,1]])) # 只看子列表中的第一个元素
'''
[[0, 1, 1], [1, 2, 3], [2, 0, 1]]
'''
print(np.sort([[1,2,3],[0,1,1],[2,0,1]])) # 默认axis=1
'''
[[1 2 3]
[0 1 1]
[0 1 2]]
''' # Series
se.sort_values(ascending=False, inplace=True) #注意Series排序没有by参数 # dataframe
# 根据值排序
df.sort_values(by='A')
df.sort_values(by='A', ascending=False) # 逆序,默认升序
df.sort_values(by='A', inplace=True) # 改变原df
df.sort_values(by=['A', 'B'])
# 根据index排序
df.sort_index(ascending=False) # 用法与上面基本一致,只是没有by

逆序排序参数

列表:reverse=True

numpy、pandas: ascending=False

字典遍历和dataframe遍历的区别

# 字典遍历
for eachItem in dict1.items():
print(eachItem) # Series遍历
for index, value in se.iteritems():
print(index) # 索引名
print(value) # 值 # dataframe遍历(分按行遍历和按列遍历)
# 按行遍历
for index, row in df.iterrows():
print(index) # 行名
print(row) # 每一行,为Series
# 按列遍历
for col_name,column in df.iteritems():
print(col_name) # 列名
print(column) # 每一列,为Series

列表和集合删除元素

remove pop del discard
列表 返回None;若不存在会报错 返回删除元素;参数默认为0,表示元素下标,超出会报错 例:del member[1]
集合 同上 同上 返回None; 若不存在不会报错

不同的numpy生成方法形成的行列数量区别

np.ones   np.eye  np.zeros  np.full

pandas删除行、列

df.drop

  • 删除行
# 通过行名称删除:
df = df.drop(['1', '2']) # 不指定axis默认为0
df.drop(['1', '3'], inplace=True) # 注意若多行有相同行名,都删除 # 通过行号删除
df.drop(df.index[0], inplace=True) # 删除第1行
df.drop(df.index[0:3], inplace=True) # 删除前3行
df.drop(df.index[[0, 2]], inplace=True) # 删除第1第3行 # 通过过滤条件进行切片(实际应用时一般用)
chooses = df['B'].drop_duplicates().index
df.loc[chooses]
  • 删除列
del df['A'] # 删除A列,会就地修改

df = df.drop(['B', 'C'], axis=1)        # drop不会就地修改,创建副本返回

df.drop(['B', 'C'], axis=1, inplace=True)   # inplace=True会就地修改

过滤空值

  • numpy 判断空值用np.isnan,其参数可以是数值或Numpy,也可以是DataFrame或Series

    a = np.array([np.nan, 1, 2, np.nan, 3, 4, 5])
    # ~取补运算符过滤NaN
    print('非空过滤数组:')
    print(a[~np.isnan(a)])
  • pandas 判断空值用isnull(),只能作用于DataFrame或Series

    df = df[df['one'].isnull()]
    df = df[df['one'].notnull()] df = df.dropna() # 删除全部是空值的行
    df = df.dropna(subset=['one']) # 删除某一列是空值的行

pd开头的方法

  • pd.DataFrame / pd.Series
  • pd.set_option
  • pd.read_csv / pd.read_excel
  • pd.concat
  • pd.merge
  • pd.qcut
  • pd.get_dummies
  • pd.pivot_table
  • pd.crosstab

prefix/suffixes

  • prefix 在pd.get_dummies中使用
  • suffixes 在pd.merge中使用

Python数据分析易错知识点归纳(五):横向对比的更多相关文章

  1. python函数-易错知识点

    定义函数: def greet_users(names): #names是形参 """Print a simple greeting to each user in th ...

  2. JavaScript易错知识点整理

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  3. JavaScript 易错知识点整理

    本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES ...

  4. JavaScript易错知识点整理[转]

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  5. JS易错知识点

    JAVASCRIPT易错知识点整理 前言 本文是学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由 ...

  6. Java易错知识点(1) - 关于ArrayList移除元素后剩下的元素会立即重排

    帮一个网友解答问题时,发现这样一个易错知识点,现总结如下: 1.易错点: ArrayList移除元素后,剩下的元素会立即重排,他的 size() 也会立即减小,在循环过程中容易出错.(拓展:延伸到所有 ...

  7. JavaScript易错知识点

    JavaScript易错知识点整理1.变量作用域上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则输出a等于2. 上方的函数作用域中虽然声明并赋值了a,但位于console之下 ...

  8. Python入门---易错已错易混淆----知识点

    1.not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9 结果会输出啥? 根据优先级:(not 1) or (0 and 1) or (3 a ...

  9. [置顶] 单片机C语言易错知识点经验笔记

    今天写这一篇文章并不是因为已经想好了一篇文章才写下来,而是我要将这一篇文章作为一个长期的笔记来写,我会一直更新.在进行单片机开发时,经常都会出现一些很不起眼的问题,这些问题其实都是很基础的c语言知识点 ...

  10. Python的易错点

    一.列表和元组的区别 列表是允许修改的,而元组是不能修改的,元组只能实现拼接,形成一个新的元组.两者可以实现相互转换,列表转换成元组使用truple函数,而元组转换成列表使用list函数. 二.Raw ...

随机推荐

  1. PRINCE2核心知识点整理

    前言 PRINCE2,即 PRoject IN Controlled Environment(受控环境中的项目)是一种结构化的项目管理方法论,由英国政府内阁商务部(OGC)推出,是英国项目管理标准. ...

  2. Springboot3整合使用ja-captcha行为验证码解决方案

    截止到目前,Springboot最新稳定版本已经迭代到3.0.5,而我们项目中使用的行为验证码框架ja-captcha还没有适配Springboot3,码云上类似的请求也没有得到过回应,于是决定自己动 ...

  3. Typora 隐藏侧边栏图片文件夹

    前言 在使用 Typora 的时候,我将图片的保存路径设置为了如下所示: 这样设置是为了更方便的管理笔记中的图片,但图片文件夹却也显示在了侧边栏中,随着笔记增多,我的侧边栏越来越乱... 难道要忍气吞 ...

  4. “结巴”中文分词:做最好的 Python 中文分词组件

    jieba "结巴"中文分词:做最好的 Python 中文分词组件 "Jieba" (Chinese for "to stutter") C ...

  5. [C++基础入门] 7、 指针

    文章目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 7.3 指针所占内存空间 7.4 空指针和野指针 7.5 const修饰指针 7.6 指针和数组 7.7 指针和函数 7.8 ...

  6. MySQL事务和锁实战篇

    文章目录 MySQL事务和锁 事务 事务的控制语句 事务隔离级别设置 脏读 不可重复读 幻读 锁机制 InnoDB的行级锁 锁实战 死锁 总结 MySQL事务和锁 事务 说到关系型的数据库的事务,相信 ...

  7. 【漏洞分析】ReflectionToken BEVO代币攻击事件分析

    前言 BEVO代币是一种Reflection Token(反射型代币),并且拥有通缩的特性.关于Reflection Token更为详细的说明可参考这篇文章.然后目前浏览到的很多分析报告没有指出其漏洞 ...

  8. #Python pandas库,读取模块,代码笔记

    日常数据清洗中,利用python清洗的第一步就是读取对应文件,今天一起复盘一下数据读取环节的常规操作. csv和xlsx格式读取类似,所以用csv做案例 X-MIND图

  9. python Unitest和pytest 介绍和安装

    前言 目前有两种纯测试的测试框架,pytest和unittest,这系列文章主要介绍pytest为主 UnitTest测试框架理论 python 自带的单元测试框架,常用在单元测试 在自动化测试中提供 ...

  10. js数组和字符串方法

    一.数组方法 1.1.可以改变原数组 var arr = [10, 20, 30, 40, 50, 55]; // 1. **** push() --- 在数组的最后添加一项内容 // var ret ...