醉卧梦星河

V1

2022/11/20阅读:26主题:红绯

pandas使用

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

分类:

后端

标签:

后端

作者介绍

醉卧梦星河
V1

股票,程序技术,公众号:醉卧梦星河