【转载】pandas常用函数
原文链接:https://www.cnblogs.com/rexyan/p/7975707.html
一、import语句
- import pandas as pd
- import numpy as np
- import matplotlib.pyplot as plt
- import datetime
- import re
二、文件读取
- 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的字典
三、数据预处理
- 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’, '':'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表示
四、数据筛选
- 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对象返回
五、数据运算与排序
- 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值
六、数学统计
- 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']) 交叉表,计算分组的频率
总结
以上就是本文关于Python pandas常用函数详解的全部内容,希望对大家有所帮助。
【转载】pandas常用函数的更多相关文章
- pandas常用函数之shift
shift函数是对数据进行移动的操作,假如现在有一个DataFrame数据df,如下所示: index value1 A 0 B 1 C 2 D 3 那么如果执行以下代码: df.shift() 就会 ...
- pandas常用函数之diff
diff函数是用来将数据进行某种移动之后与原数据进行比较得出的差异数据,举个例子,现在有一个DataFrame类型的数据df,如下: index value1 A 0 B 1 C 2 D 3 如果执行 ...
- pandas 常用函数整理
pandas常用函数整理,作为个人笔记. 仅标记函数大概用途做索引用,具体使用方式请参照pandas官方技术文档. 约定 from pandas import Series, DataFrame im ...
- Pandas常用函数入门
一.Pandas Python Data Analysis Library或Pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的.Pandas纳入了大量库和一些标准的数据模型, ...
- pandas常用函数
1. df.head(n): 显示数据前n行,不指定n,df.head则会显示所有的行 2. df.columns.values获取所有列索引的名称 3. df.column_name: 直接获取列c ...
- 整理 pandas 常用函数
1. df.head(n): 显示数据前n行,不指定n,df.head则会显示所有的行 2. df.columns.values获取所有列索引的名称 3. df.column_name: 直接获取列c ...
- 5.2 pandas 常用函数清单
文件读取 df = pd.read_csv(path='file.csv') 参数:header=None 用默认列名,0,1,2,3... names=['A', 'B', 'C'...] 自定义列 ...
- python,pandas常用函数
一.rename,更改df的列名和行索引 df=pd.DataFrame(np.arange(,).reshape(,)) print(df) print(type(df)) 结果为: <cla ...
- pandas 常用函数
随机推荐
- 星屑幻想 optimal mark
LINK :SP839 星屑幻想 取自 OJ 的名称 小事情...题目大意还是要说的这道题比较有意思,想了一段时间. 给你一张图 这张图给答案带来的贡献是每条边上两个点值得异或 一些点的值已经被确定 ...
- 4.3 省选模拟赛 序列游戏 dp
可以发现 某一段被删除后状态难以表示 也难以链接起来. 考虑暴力 有40分的状压dp 暴力存状态 然后枚举转移即可.最后注意和f[0]这个状态取max 不然一分都没有. const int MAXN= ...
- windows:shellcode 原理
shellcode,一段短小精干的代码,放在任何地方都能执行,不依赖当前所处环境,那么就有这么几点要求: 不能有全局变量:函数里的局部变量在栈空间,地址是执行的时候动态分配的:但全局变量在编译时,会由 ...
- 深度学习论文翻译解析(十二):Fast R-CNN
论文标题:Fast R-CNN 论文作者:Ross Girshick 论文地址:https://www.cv-foundation.org/openaccess/content_iccv_2015/p ...
- GCN 入门
参考链接: https://www.zhihu.com/question/54504471/answer/611222866 1 拉普拉斯矩阵 参考链接: http://bbs.cvmart.net/ ...
- 6、单例模式 Singleton模式 只有一个实例 创建型模式
1.了解Singleton模式 程序在运行时,通常都会生成很多实例.例如,表示字符串的java . lang . string类的实例与字符串是- -对- -的关系,所以当有1000个字符串的时候,会 ...
- spring时遇到的小问题
最近在学习spring的时候遇到了两个小问题,在此总结一下 1.少导了所需要的包 运行测试程序,报出以下错误. 初步分析,得知是dataSource数据源没有创建成功,以为dataSource配置文件 ...
- geth常用命令
转载地址 https://blog.csdn.net/qq_36124194/article/details/83686823 geth常用命令 初始化私链 geth --datadir /path/ ...
- git日常使用的常用命令总结
git日常使用的常用命令总结 git 是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常 ...
- Spark优化之小文件是否需要合并?
我们知道,大部分Spark计算都是在内存中完成的,所以Spark的瓶颈一般来自于集群(standalone, yarn, mesos, k8s)的资源紧张,CPU,网络带宽,内存.Spark的性能,想 ...