数分-工具-Pandas2-pandas基础

数分-工具-Pandas2-pandas基础

(AI算法系列)

1知识点

  • 文件读取写入
    • 文件读取
    • 数据写入
  • 基本数据结构
    • Series
    • DataFrame
  • 常用基本函数
    • 汇总函数
    • 特征统计函数
    • 唯一值函数
    • 替换函数
    • 排序函数
    • apply方法
  • 窗口对象
    • 滑窗对象
    • 扩展窗口
  • 练习

2具体内容

2.1文件读取写入

2.1.1文件读取

  1. csv
import pandas as pd
df_csv = pd.read_csv('')
  1. excel
df_excel = pd.read_excel('')
  1. 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')
#0 a
#1 a
#2 b
#3 b
#4 b
#5 b
#6 a
#dtype: object
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)#逐行计算
#Height 163.218033
#Weight 55.015873
#dtype: float64

#若指定 axis=1 ,那么每次传入函数的就是行元素组成的 Series ,其结果与之前的逐行均值结果一致
df_demo.apply(lambda x:x.mean(),axis=1).head()

#mad返回的是一个序列中偏离该序列均值的绝对值大小的均值
df_demo.apply(lambda x:(x-x.mean()).abs().mean())
 #等价于
df_demo.mad()
  • 谨慎使用apply函数,自由度高但性能差,推荐内置函数

2.4窗口对象

2.4.1滑窗对象

  • 滑动窗口rolling,窗口大小window
    • 构建roller
    • 计算统计量
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待补充

  • pandas熟悉使用

4Q&A

5code

6参考

  • http://joyfulpandas.datawhale.club/Content/ch1.html#

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...