数据分析pandas 常用函数手册

1,177 阅读5分钟

pandas 函数

最近在对股票数据进行清洗和计算的过程中,遇到了不少对这个库函数的使用,所以做了个函数使用总结。

轴的理解

pandas 很多函数会指定轴,要正确理解轴的含义,才容易明白函数意义

ax0 选中列,对行进行函数应用 ax1 选中行,对列进函数应用

我的理解是先看选中了啥,然后应用操作,例如默认的都是 ax0 ,代表选中了列,多行进行运算操作。

常用函数手册

信息

函数说明
df.shape输出dataframe有多少行,多少列
df.shape[0]输出行数量,1 输出列数量
df.colums输出列的名字
df.index输出行的名字
df.dtpyes输出列的类型名
df.head(n)输出df前n行
df.tail(n)输出df后n行
df.sample(n=3)随机抽取几行
df.describe()对数字进行一个简单直观统计

行操作

函数说明
loc['index名']索引某行,返回Series
loc['index名n':'index名m']索引多行,返回DataFrame
loc[:,'date':'code']索引所有行,列为date,code ,返回DataFrame
at[index,'code']访问某个元素,loc也可以,但更为高效
iloc[n]以序号选取某一行,返回Series
iloc[n:m]序号多行选择,返回DataFrame
iloc[:,n:m]第一个:选择所有,逗号后面的是多列选择,
返回DataFrame
iloc[:,:]读取所有行和列,返回DataFrame
iat[1,1]读取指定的某个元素,
使用iloc也可以,但这个更高效

列操作

函数说明
df['股票名']+'_地产'原有字符上添加新字符
df['收盘价']*df['成交量']多列操作运算,eg:结果是成交额
df['新列名']=df['股票名']+'_地产'新增一列

统计函数

函数说明
df['收盘价'].mean()一列求均值,返回一个数
df[['收盘价','最高价']].mean()多列求均值,返回多个数
df[['收盘价','最高价']].mean(axis=1)选择行,操作多列,返回所有行对应的均值
默认axis=0,选中列,操作多行
df['收盘价'].max()原理同上,返回最大值
df['收盘价'].min()原理同上,返回最小值
df['收盘价'].std()原理同上,返回标准差
df['收盘价'].count()原理同上,返回非空数值数量
df['收盘价'].median()原理同上,返回中位数
df['收盘价'].quantile(0.5)原理同上,返回50%分位数

很有用的函数

函数说明
shif()偏移函数,大于0 下偏移
diff()偏移差值函数
pct_change()偏移差值比例函数,相当于涨跌幅
rank(ascending=True,
pct=False)
排序函数,ascending代表顺序排序
还是逆序排序,pct是否百分比排序(0-1.0)
value_counts()统计该列中每个元素出现的个数,
返回数据Series
df['收盘价_3天均值']=df['收盘价'].rolling(3).mean()rolling函数,取最近的n行,
其实就是一个滑动窗口
df['收盘价_至今均值']=df['收盘价'].expanding().mean()expanding函数,从开始到当前行

筛选

函数说明
df[df['code'] = '000001']返回符合筛选条件的行,
多个条件用 & 等逻辑符链接

缺省值

函数说明
dropna(how='any')删除带有空值的行,
how='any'意味着,只要有一个空值就删除
how='all'要全是空值才删除
dropna(subset=['code','name'],how='any')选中对应的列符合空值删除行
fillna(value='我叫补全')缺失值补全为固定值
df['某列'].fillna(value=df['收盘价'],inplace=True)某列空值以某列数值补全
fillna(method='ffill')向上寻找非空值补全
fillna(method='bfill')向下寻找非空值补全
fillna(method='bfill')向下寻找非空值补全
notnull()非空值判断
isnull()空值判断
df[df['某列'].notnull()]以某列不为空作为条件,行输出

排序函数

函数说明
reset_index(inplace=True)索引恢复为默认
sort_values(by=['date'],ascending=1)by参数指定按照什么进行排序,
ascending指定顺序还是逆序
sort_values(by=['code','date'],ascending=[1,1])多列进行排序,eg code 相等的放前面,
再按date进行排序

合并函数

函数说明
df1.append(df2,ignore_index=True)拼接函数,ignore_index 是否忽略index名,
True重新给index, eg 上下拼接

去重

函数说明
drop_duplicates(subset=['股票代码','交易日期'],
keep= 'first')
inplace=True
subset 参数指定用那几列作为去重的依据,
若不指定则以全部列的数据做为判断,
keep 参数是指去重时保持上面一行
还是下面一行

其他重要的函数

函数说明
df.rename(colums={'MACD_金叉':'金叉'})可以字典形式对列名进行重命名
df.empty是否为空
df.T数据转置,行列互换

字符串处理

函数说明
df['股票代码'].str[:2]对股票代码列的字符串去前两字符
df['股票代码'].str.upper()对股票代码列的字符串转为大写
df['股票代码'].str.lower()对股票代码列的字符串转为小写
df['股票代码'].str.len()对股票代码列的字符串进行计算
df['股票代码'].str.strip()对股票代码列的字符串进行空格去掉
df['股票代码'].str.contains('sz')该列是否包含该字符
df['股票代码'].str.replace('sz','sh')该列字符进行替换
df['股票代码'].str.split('; ')对字符串进行分割
df['股票代码'].str.split('; ').str[:2]对字符串进行分割后,取第一位置

时间处理

函数说明
df['交易日期']=pd.to_datetime(df['交易日期'])将交易日期由字符串转成日期
df['交易日期']通过交易日期进行访问
df['交易日期'].dt.year输出日期的年份
df['交易日期'].dt.month输出日期的月份,其他雷同week
df['交易日期']+pd.Timedelta(days=1)用于表示时间差数据

官方文档

上面都是一些很常用的函数,官方文档才是最全的,数据清洗统计过程中常常去这里查吧。

官方使用手册

https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html#operations

总结于 2022 年 11 月 20 日 16:27:55

本文由mdnice多平台发布