1 import语句

?
1
2
3
4
5
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
import re

2 文件读取

df = pd.read_csv(path='file.csv')
参数:header=None 用默认列名,0,1,2,3...
names=['A', 'B', 'C'...] 自定义列名
index_col='A'|['A', 'B'...] 给索引列指定名称,如果是多重索引,可以传list
skiprows=[0,1,2] 需要跳过的行号,从文件头0开始,skip_footer从文件尾开始
nrows=N 需要读取的行数,前N行
chunksize=M 返回迭代类型TextFileReader,每M条迭代一次,数据占用较大内存时使用
sep=':'数据分隔默认是',',根据文件选择合适的分隔符,如果不指定参数,会自动解析
skip_blank_lines=False 默认为True,跳过空行,如果选择不跳过,会填充NaN
converters={'col1', func} 对选定列使用函数func转换,通常表示编号的列会使用(避免转换成int)

dfjs = pd.read_json('file.json') 可以传入json格式字符串
dfex = pd.read_excel('file.xls', sheetname=[0,1..]) 读取多个sheet页,返回多个df的字典

3 数据预处理

df.duplicated() 返回各行是否是上一行的重复行
df.drop_duplicates() 删除重复行,如果需要按照列过滤,参数选填['col1', 'col2',...]
df.fillna(0) 用实数0填充na
df.dropna() axis=0|1 0-index 1-column
how='all'|'any' all-全部是NA才删 any-只要有NA就全删
del df['col1'] 直接删除某一列
df.drop(['col1',...], aixs=1) 删除指定列,也可以删除行
df.column = col_lst 重新制定列名
df.rename(index={'row1':'A'}, 重命名索引名和列名
columns={'col1':'A1'})
df.replace(dict) 替换df值,前后值可以用字典表,{1:‘A', '2':'B'}

def get_digits(str):
m = re.match(r'(\d+(\.\d+)?)', str.decode('utf-8'))
if m is not None:
return float(m.groups()[0])
else:
return 0
df.apply(get_digits) DataFrame.apply,只获取小数部分,可以选定某一列或行
df['col1'].map(func) Series.map,只对列进行函数转换

pd.merge(df1, df2, on='col1',
how='inner',sort=True) 合并两个DataFrame,按照共有的某列做内连接(交集),outter为外连接(并集),结果排序

pd.merge(df1, df2, left_on='col1',
right_on='col2') df1 df2没有公共列名,所以合并需指定两边的参考列

pd.concat([sr1, sr2, sr3,...], axis=0) 多个Series堆叠成多行,结果仍然是一个Series
pd.concat([sr1, sr2, sr3,...], axis=1) 多个Series组合成多行多列,结果是一个DataFrame,索引取并集,没有交集的位置填入缺省值NaN

df1.combine_first(df2) 用df2的数据补充df1的缺省值NaN,如果df2有更多行,也一并补上

df.stack() 列旋转成行,也就是列名变为索引名,原索引变成多层索引,结果是具有多层索引的Series,实际上是把数据集拉长

df.unstack() 将含有多层索引的Series转换为DataFrame,实际上是把数据集压扁,如果某一列具有较少类别,那么把这些类别拉出来作为列
df.pivot() 实际上是unstack的应用,把数据集压扁

pd.get_dummies(df['col1'], prefix='key') 某列含有有限个值,且这些值一般是字符串,例如国家,借鉴位图的思想,可以把k个国家这一列量化成k列,每列用0、1表示

4 数据筛选

df.columns 列名,返回Index类型的列的集合
df.index 索引名,返回Index类型的索引的集合
df.shape 返回tuple,行x列
df.head(n=N) 返回前N条
df.tail(n=M) 返回后M条
df.values 值的二维数组,以numpy.ndarray对象返回
df.index DataFrame的索引,索引不可以直接赋值修改
df.reindex(index=['row1', 'row2',...]
columns=['col1', 'col2',...]) 根据新索引重新排序
df[m:n] 切片,选取m~n-1行
df[df['col1'] > 1] 选取满足条件的行
df.query('col1 > 1') 选取满足条件的行
df.query('col1==[v1,v2,...]')
df.ix[:,'col1'] 选取某一列
df.ix['row1', 'col2'] 选取某一元素
df.ix[:,:'col2'] 切片选取某一列之前(包括col2)的所有列
df.loc[m:n] 获取从m~n行(推荐)
df.iloc[m:n] 获取从m~n-1行
df.loc[m:n-1,'col1':'coln'] 获取从m~n行的col1~coln列

sr=df['col'] 取某一列,返回Series
sr.values Series的值,以numpy.ndarray对象返回
sr.index Series的索引,以index对象返回

5 数据运算与排序

df.T DataFrame转置
df1 + df2 按照索引和列相加,得到并集,NaN填充
df1.add(df2, fill_value=0) 用其他值填充
df1.add/sub//mul/div 四则运算的方法
df - sr DataFrame的所有行同时减去Series
df * N 所有元素乘以N
df.add(sr, axis=0) DataFrame的所有列同时减去Series

sr.order() Series升序排列
df.sort_index(aixs=0, ascending=True) 按行索引升序
df.sort_index(by=['col1', 'col2'...]) 按指定列优先排序
df.rank() 计算排名rank值

6 数学统计

sr.unique Series去重
sr.value_counts() Series统计频率,并从大到小排序,DataFrame没有这个方法
sr.describe() 返回基本统计量和分位数

df.describe() 按各列返回基本统计量和分位数
df.count() 求非NA值得数量
df.max() 求最大值
df.min() 求最大值
df.sum(axis=0) 按各列求和
df.mean() 按各列求平均值
df.median() 求中位数
df.var() 求方差
df.std() 求标准差
df.mad() 根据平均值计算平均绝对利差
df.cumsum() 求累计和
sr1.corr(sr2) 求相关系数
df.cov() 求协方差矩阵
df1.corrwith(df2) 求相关系数

pd.cut(array1, bins) 求一维数据的区间分布
pd.qcut(array1, 4) 按指定分位数进行区间划分,4可以替换成自定义的分位数列表

df['col1'].groupby(df['col2']) 列1按照列2分组,即列2作为key
df.groupby('col1') DataFrame按照列1分组
grouped.aggreagte(func) 分组后根据传入函数来聚合
grouped.aggregate([f1, f2,...]) 根据多个函数聚合,表现成多列,函数名为列名
grouped.aggregate([('f1_name', f1), ('f2_name', f2)]) 重命名聚合后的列名
grouped.aggregate({'col1':f1, 'col2':f2,...}) 对不同的列应用不同函数的聚合,函数也可以是多个

df.pivot_table(['col1', 'col2'],
rows=['row1', 'row2'],
aggfunc=[np.mean, np.sum]
fill_value=0,
margins=True) 根据row1, row2对col1, col2做分组聚合,聚合方法可以指定多种,并用指定值替换缺省值

pd.crosstab(df['col1'], df['col2']) 交叉表,计算分组的频率

转载于:https://www.cnblogs.com/xuyuchen/p/8877935.html

pandas 函数说明相关推荐

  1. 让数据分析更便捷快速,了解这12种Numpy和Pandas函数

    选自TowardsDataScience 作者:Kunal Dhariwal 机器之心编译 我们都知道,Numpy 是 Python 环境下的扩展程序库,支持大量的维度数组和矩阵运算:Pandas 也 ...

  2. Python之Pandas:利用Pandas函数实现对表格文件的查之高级查询(类似sql,分组查询等)之详细攻略

    Python之Pandas:利用Pandas函数实现对表格文件的查之高级查询(类似sql,分组查询等)之详细攻略 目录 利用Pandas函数实现对表格文件的查之高级查询(类似sql) 1.分组查询

  3. 加速数据分析,这12种高效Numpy和Pandas函数为你保驾护航

    我们都知道,Numpy 是 Python 环境下的扩展程序库,支持大量的维度数组和矩阵运算:Pandas 也是 Python 环境下的数据操作和分析软件包,以及强大的数据分析库.二者在日常的数据分析中 ...

  4. 【Python】推荐20个好用到爆的Pandas函数方法

    今天分享几个不为人知的pandas函数,大家可能平时看到的不多,但是使用起来倒是非常的方便,也能够帮助我们数据分析人员大幅度地提高工作效率,同时也希望大家看完之后能够有所收获 items()方法 it ...

  5. 【Python】分享14条非常实用的Pandas函数方法,建议珍藏!!

    今天和大家来分享几个十分好用的pandas函数,可能平时并不是特别的常见,但是却能够帮助我们在平时的工作.学习当中极大的提高效率,小编也希望读者朋友们在看完本文之后能够大有收获 1 ExcelWrit ...

  6. 【Python基础】高效的10个Pandas函数,你都用过吗?

    文章来源于Python大数据分析,作者朱卫军 文章来源:towardsdatascience 作者:Soner Yıldırım 翻译\编辑:Python大数据分析 ❞ Pandas是python中最 ...

  7. 盘点66个Pandas函数,轻松搞定“数据清洗”!

    今天我们重新盘点66个Pandas函数合集,包括数据预览.数值数据操作.文本数据操作.行/列操作等等,涉及"数据清洗"的方方面面. Pandas 是基于NumPy的一种工具,该工具 ...

  8. fillna函数_听说这些pandas函数,是数据科学家和软件工程师的最爱

    全文共2758字,预计学习时长13分钟 图源:unsplash 软件工程师该像是索引,而不是教科书.你无法记住所有内容,但得知道如何快速查找它们. 能够快速查找和使用函数让我们在编写代码时可以达到一定 ...

  9. dataframe转化为array_【Python专栏】12 种高效 Numpy 和 Pandas 函数为你加速分析

    来源:机器之心 编译:Jamin.杜伟.张倩 我们都知道,Numpy 是 Python 环境下的扩展程序库,支持大量的维度数组和矩阵运算:Pandas 也是 Python 环境下的数据操作和分析软件包 ...

  10. Pandas函数方法分类 参数说明+实例分析!!

    Pandas描述性统计(函数用法说明) 函数索引(同样可以对 行列 进行操作) count() 非空数据的数量 sum() 所有值之和 mean() 所有值的平均值 median() 所有值的中位数 ...

最新文章

  1. include_once 问题
  2. 总是感觉时间不够用?程序员如何管理时间?
  3. 美国商务部工业和安全局(BIS)发布《关于拟制定脑机接口技术出口管制规则的通知》...
  4. vs2010文件加载使用简体中文(GB2312)问题解决方案
  5. 拆解声网Q4财报:除了“元宇宙”,我们还应该关注什么?
  6. mysql 内存占用过多的解决方法
  7. 第九十四期:GitHub 发布 2019 年年度报告
  8. kotlin半生对象_Kotlin程序| 随播对象特征
  9. 微信开发1之PHP成功获取微信支付的Token
  10. VMware workstation 15.5.2及镜像文件下载
  11. python灰色预测_灰色系统预测GM(1,1)模型
  12. cad插件_CAD插件三领外挂7
  13. 计算机应用第四单元,计算机应用基础基础模块教案 第四单元 Word 2010文字处理软件.docx...
  14. java引入math包_java.math包应用
  15. Windows系统主机加固
  16. php生成字符画,超易用的字符画在线生成器,非常适合制作STEAM展柜。
  17. calcite mysql_jsqlparser和calcite和druid功能对比
  18. python 绘图如何画螺旋圈_如何画出python螺旋线
  19. vue-router mode两种模式
  20. 02-CSS基础与进阶-day5_2018-09-03-21-41-57

热门文章

  1. 关于Socket.Receive()与Send()的常见问题
  2. 腾讯营销洞察:中国奢侈品市场数字化趋势洞察报告2021年版
  3. python歌词解析_python 将歌词解析封装成类,要求:提供一个方法(根据时间返回歌-站长资讯中心...
  4. 语音助手究竟是“人工智能”还是“人工智障?
  5. 数组和字符串的相互转换---------数组转换为字符串
  6. jenkin插件整理
  7. 网页链接聊QQ,点击链接聊QQ
  8. 接口和抽象类(超详细)
  9. U3D之摄像机不同视角的方法
  10. python最新技术开锁工具_精选26个Python实用技巧,想秀技能先Get这份技术列表!...