• 数分-工具-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
    • 2
    1. excel
    df_excel = pd.read_excel('')
    
    • 1
    1. txt
    df_txt = pd.read_table('')
    
    • 1
    • 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)
    
    • 1
    • 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')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 逻辑替换
      • 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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 谨慎使用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())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    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#
  • 相关阅读:
    FANUC机器人socket通讯硬件配置
    将邻接矩阵转换成图
    ChatGPT Prompting开发实战(八)
    【系统架构设计】计算机公共基础知识: 3 计算机网络
    Vue基础指令
    针对图像分类的数据增强方法,离线增强,适合分类,无标签增强
    pat_basic_1017 A除以B
    从零学算法(LCR 180)
    【OpenAI】新功能发布
    数据库--【基础篇】
  • 原文地址:https://blog.csdn.net/u012835414/article/details/126484838