数分-工具-Pandas2-pandas基础
(AI算法系列)
1知识点
- 文件读取写入
- 基本数据结构
- 常用基本函数
- 汇总函数
- 特征统计函数
- 唯一值函数
- 替换函数
- 排序函数
- apply方法
- 窗口对象
- 练习
2具体内容
2.1文件读取写入
2.1.1文件读取
- csv
import pandas as pd
df_csv = pd.read_csv('')
- excel
df_excel = pd.read_excel('')
- txt
df_txt = pd.read_table('')
- header=None 表示第一行不作为列名
- index_col 表示把某一列或几列作为索引
- usecols 表示读取列的集合,默认读取所有的列
- parse_dates 表示需要转化为时间的列
- nrows 表示读取的数据行数。
- txt:sep自定义分隔符,指定python引擎;使用正则表达式时进行转义
2.1.2数据写入
index = False,保存时去除索引
to_csv可存txt文件,允许自定义分隔符\t
df_txt.to_csv('', sep='\t', index=False)
- to_markdown
- to_latex(tabulate包)
2.2基本数据结构
2.2.1Series
1.组成
- 序列的值data
- 索引index(也可指定索引名字,默认空)
- 存储类型dtype
- 序列名name
2.object类型(混合类型)用‘.’获取属性值 - s.values
- s.index
- s.dtype
- s.name
- s.shape
- s[‘third’]取某个索引的值
2.2.2DataFrame-二维
构建,比Series多了列索引
- [col_name] 与 [col_list] 来取出相应的列与由多个列组成的表,结果分别为 Series 和 DataFrame
- 同样用‘.’获取属性值
- .T转置
2.3常用基本函数
df.columns
2.3.1汇总函数
- df.head()\df.tail()
- df.info()
- df.describe()(pandas-profiling包)
2.3.2特征统计函数
- sum
- mean
- median
- var
- std
- max
- min
- quantile 分位数
- count 非缺失值个数
- idxmax 最大值索引
注:返回标量,聚合函数,axis=1逐行聚合,默认0逐列聚合
2.3.3唯一值函数g
- unique 唯一值组成的列表
- nunique 唯一值个数
- value_counts 唯一值和其对应出现的频数
- drop_duplicates多个列组合的唯一值
- keep=[first,last,False]
- first每个组合保留第一次出现的所在行
- last保留嘴和一次出现的所在行
- False把重复组合所在行剔除
- duplicated,返回是否为唯一值的布尔列表
2.3.4替换函数
- 映射替换
- str.replace:正则替换
- cat.codes
- replace:字典构造;指定 method 参数为 ffill 则为用前面一个最近的未被替换的值进行替换,bfill 则使用后面最近的未被替换的值进行替换。
s = pd.Series(['a', 1, 'b', 2, 1, 1, 'a'])
s.replace([1, 2], method='ffill')
s.replace([1, 2], method='bfill')
- 逻辑替换
- where:where 函数在传入条件为 False 的对应行进行替换
- mask : mask 在传入条件为 True 的对应行进行替换,当不指定替换值时,替换为缺失值
- 传入的条件只需是与被调用的 Series 索引一致的布尔序列即可
- 数值替换
- round 取整
- abs 取绝对值
- clip 截断,超过边界的只能截断为边界值
2.3.5排序函数
set_index 设置索引
- 值排序 sort_values,默认ascending=True升序;
- 索引排序 sort_index,元素的值在索引中,需要指定索引层的名字和层号,level表示
2.3.6 apply方法
- DataFrame 的行迭代或者列迭代,与统计聚合函数一致
- 以序列为输入的函数
df_demo = df[['Height', 'Weight']]
def my_mean(x):
res = x.mean()
return res
df_demo.apply(my_mean)
df_demo.apply(lambda x:x.mean(),axis=1).head()
df_demo.apply(lambda x:(x-x.mean()).abs().mean())
df_demo.mad()
- 谨慎使用apply函数,自由度高但性能差,推荐内置函数
2.4窗口对象
2.4.1滑窗对象
s = pd.Series([1,2,3,4,5])
roller = s.rolling(window=3)
roller.mean()
roller.sum()
roller.cov()
roller.corr()
roller.apply(lambda x:x.mean())
- shift, diff, pct_change 是一组类滑窗函数,它们的公共参数为 periods=n ,默认为 1;n为负,表示反方向操作
- shift取向前第 n个元素的值
- diff与向前第 n 个元素做差(与 Numpy 中不同,后者表示 n 阶差分)
- pct_change与向前第 n 个元素相比计算增长率
s = pd.Series([1,3,6,10,15])
s.shift(2)
s.rolling(3).apply(lambda x:list(x)[0])
s.diff(3)
s.rolling(4).apply(lambda x:list(x)[-1]-list(x)[0])
s.pct_change()
def my_pct(x):
L = list(x)
returen L[-1]/L[0]-1
s.rolling(2).apply(my_pct)
s.shift(-1)
s.diff(-2)
2.4.2扩展窗口
- 动态长度的窗口
- 大小:从序列开始处到具体操作的对应位置,其使用的聚合函数会作用于这些逐步扩张的窗口上
- 序列为 a1, a2, a3, a4,其每个位置对应的窗口即 [a1]、[a1, a2]、[a1, a2, a3]、[a1, a2, a3, a4]
- cummax, cumsum, cumprod 函数是典型的类扩张窗口函数
2.1.3指数加权窗口ewm
2.5练习
3待补充
4Q&A
无
5code
无
6参考
- http://joyfulpandas.datawhale.club/Content/ch1.html#