五、横向对比

排序

# 列表
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. Linux网络管理入门

    根据自己的需要来设置Linux的一些属性 网络状态查看 在终端输入ifconfig可以查看网络状态 # ifconfig eth0: flags=4163<UP,BROADCAST,RUNNIN ...

  2. Indent----- IndentationError: unexpected indent

    Unexpected indent 错误 注意,Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现.但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个 ...

  3. 14-压缩css

    const { resolve } = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') const M ...

  4. List嵌套排序并取第一个对象

    using Newtonsoft.Json;using 嵌套List排序; //示例listvar exampleString = "{\"code\":1,\" ...

  5. [Pytorch框架] 3.1 logistic回归实战

    文章目录 3.1 logistic回归实战 3.1.1 logistic回归介绍 3.1.2 UCI German Credit 数据集 3.2 代码实战 import torch import to ...

  6. i < sqrt(n) 和 i*i < n 那一种写法更加高效?

    这两种写法效率依赖处理器.编译器和标准库.一般来说循环内的重复操作的性能差于循环外的单次操作. 参考文献 Which is more efficient to use in a for loop, i ...

  7. 【自用】无限级分类获取SQL语句

    自定义函数: 1 USE [ExpenseCenter_Fibrogen] 2 GO 3 /****** Object: UserDefinedFunction [dbo].[GetSubordina ...

  8. 关于Mybatis

    一:Mybatis的优缺点 优点: 1.与JDBC相比,减少了百分之五十的代码量. 2.Mybatis是最简单的持久层框架,简单易学. 3.Mybatis灵活,不会对应用程序和现数据库设计强加任何影响 ...

  9. #Python实例 计算外卖配送距离(基于经纬度的导航及直线距离)

    一:X-MIND 二:计算两点经纬度之间的距离 经纬度是利用三维球面空间来描述地球上一个位置的坐标系统,每个经纬度坐标由经度 lng 和纬度 lat 两个分量组成.经纬度的有效范围为经度-180度到+ ...

  10. 2023-05-11:给你一个 m x n 的二进制矩阵 grid, 每个格子要么为 0 (空)要么为 1 (被占据), 给你邮票的尺寸为 stampHeight x stampWidth。 我们想将

    2023-05-11:给你一个 m x n 的二进制矩阵 grid, 每个格子要么为 0 (空)要么为 1 (被占据), 给你邮票的尺寸为 stampHeight x stampWidth. 我们想将 ...