Pandas 是一个强大的分析结构化数据的工具集,它的使用基础是 Numpy(提供高性能的矩阵运算),用于数据挖掘和数据分析,同时也提供数据清洗功能。
本页收集了 Python 数据分析库 Pandas 及相关工具的日常使用方法,备查,持续更新中。
缩写说明:
df:任意的 Pandas DataFrame 对象
s:任意的 Pandas Series 对象
注:有些属性方法 df 和 s 都可以使用
教程相关:
https://pandas.pydata.org/pandas-docs/stable/user_guide/cookbook.html
https://github.com/justmarkham/pandas-videos
关键缩写和包导入
import pandas as pd # 最新为 1.0.4 版本 (2020-05-29) import numpy as np import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline
导入数据
# 从 CSV 文件导入数据
pd.read_csv('file.csv', name=['列名','列名2']) # 从限定分隔符的文本文件导入数据 pd.read_table(filename, header=0) # Excel 导入,指定 sheet 和表头 pd.read_excel('file.xlsx', sheet_name=' 表1', header=0) # 从 SQL 表/库导入数据 pd.read_sql(query, connection_object) # 从 JSON 格式的字符串导入数据 pd.read_json(json_string) # 解析 URL、字符串或者 HTML 文件,抽取其中的 tables 表格 pd.read_html(url) # 从你的粘贴板获取内容,并传给 read_table() pd.read_clipboard() # 从字典对象导入数据,Key 是列名,Value是数据 pd.DataFrame(dict) # 导入字符串 from io import StringIO pd.read_csv(StringIO(web_data.text))
导出输出数据
# 导出数据到CSV文件
df.to_csv('filename.csv') # 导出数据到Excel文件 df.to_excel('filename.xlsx', index=True) # 导出数据到 SQL 表 df.to_sql(table_name, connection_object) # 以Json格式导出数据到文本文件 df.to_json(filename) # 其他 df.to_html() # 显示 HTML 代码 df.to_markdown() # 显示 markdown 代码 df.to_string() # 显示格式化字符 df.to_latex(index=False) # LaTeX tabular, longtable df.to_dict('split') # 字典, 格式 list/series/records/index df.to_clipboard(sep=',', index=False) # 存入系统剪贴板 # 将两个表格输出到一个excel文件里面,导出到多个 sheet writer=pd.ExcelWriter('new.xlsx') df_1.to_excel(writer,sheet_name='第一个', index=False) df_2.to_excel(writer,sheet_name='第二个', index=False) writer.save() # 必须运行writer.save(),不然不能输出到本地 # 写法2 with pd.ExcelWriter('new.xlsx') as writer: df1.to_excel(writer, sheet_name='第一个') df2.to_excel(writer, sheet_name='第二个') # 用 xlsxwriter 导出支持合并单元格、颜色、图表等定制功能 # https://xlsxwriter.readthedocs.io/working_with_pandas.html
创建测试对象
# 创建20行5列的随机数组成的 DataFrame 对象
pd.DataFrame(np.random.rand(20,5)) # 从可迭代对象 my_list 创建一个 Series 对象 pd.Series(my_list) # 增加一个日期索引 df.index = pd.date_range('1900/1/30', periods=df.shape[0]) # 创建随机数据集 df = pd.util.testing.makeDataFrame() # 创建随机日期索引数据集 df = pd.util.testing.makePeriodFrame() df = pd.util.testing.makeTimeDataFrame() # 创建随机混合类型数据集 df = pd.util.testing.makeMixedDataFrame()
查看、检查、统计、属性
df.head(n) # 查看 DataFrame 对象的前n行 df.tail(n) # 查看 DataFrame 对象的最后n行 df.sample(n) # 查看 n 个样本,随机 df.shape # 查看行数和列数 df.info() # 查看索引、数据类型和内存信息 df.describe() # 查看数值型列的汇总统计 df.dtypes # 查看各字段类型 df.axes # 显示数据行和列名 df.mean() # 返回所有列的均值 df.mean(1) # 返回所有行的均值,下同 df.corr() # 返回列与列之间的相关系数 df.count() # 返回每一列中的非空值的个数 df.max() # 返回每一列的最大值 df.min() # 返回每一列的最小值 df.median() # 返回每一列的中位数 df.std() # 返回每一列的标准差 df.var() # 方差 s.mode() # 众数 s.prod() # 连乘 s.cumprod() # 累积连乘,累乘 df.cumsum(axis=0) # 累积连加,累加 s.nunique() # 去重数量,不同值的量 df.idxmax() # 每列最大的值的索引名 df.idxmin() # 最小 df.columns # 显示所有列名 df.team.unique() # 显示列中的不重复值 # 查看 Series 对象的唯一值和计数, 计数占比: normalize=True s.value_counts(dropna=False) # 查看 DataFrame 对象中每一列的唯一值和计数 df.apply(pd.Series.value_counts) df.duplicated() # 重复行 df.drop_duplicates() # 删除重复行 # set_option、reset_option、describe_option 设置显示要求 pd.get_option() # 设置行列最大显示数量,None 为不限制 pd.options.display.max_rows = None pd.options.display.max_columns = None df.col.argmin() # 最大值[最小值 .argmax()] 所在位置的自动索引 df.col.idxmin() # 最大值[最小值 .idxmax()] 所在位置的定义索引 # 累计统计 ds.cumsum() # 前边所有值之和 ds.cumprod() # 前边所有值之积 ds.cummax() # 前边所有值的最大值 ds.cummin() # 前边所有值的最小值 # 窗口计算(滚动计算) ds.rolling(x).sum() #依次计算相邻x个元素的和 ds.rolling(x)