• 数据科学包——pandas


    • ipython

      • 查看相关函数和补全
        • 输入库中的部分函数名,按tab
          • 如np.r ,按tab
      • 查看文档
        • 函数名?
      • 直接执行shell命令
        • 特殊命令
          • %run
          • %timeit
          • 更多ipython命令:%quickref
          • 魔术命令:%magic
      • notebook
    • pandas

      • Series (一行或一列)
        • pd.Series(list)
        • 运算标签自动对齐
      • 二维数组
        • pd.DataFrame()
          • 由数组创建(行)
            • data = pd.DataFrame(np.random.randn(6,4), index=索引列表, columns = 列标签列表)
          • 由字典创建(列)
            • d=pd.DataFrame({‘A’,1,‘B’=a,‘C’, 545}) # ABC为列标签
            • 字典值对应列表长度要一致
            • 字典值可都为Series
        • 实质:np.ndarray
      • 三维数据
        • Panel
          • items:对应第几个DataFrame
          • major_axis:行标签
          • minor_axis:列标签
        • 最新版本已移除
      • 操作
        • 查看
          • 查看形状
            • data.shape
          • 查看值
            • data.values
          • 查看所有列的属性类型
            • df.dtypes
          • 查看某一列
            • df.列名
          • 查看前几行数据
            • data.head() # 默认5行
          • 查看最后几行数据
            • data.tail() # 默认5行
          • 查看行标签
            • data.index
          • 查看列标签
            • data.columns
          • 数据透视表
            • df.pivot_table(values=要查看的值对应的索引列表,index=作为行标签的索引列表,columns=作为列标签的索引列表)
          • 统计每个值有多少个
            • df.value_counts()
          • 找出值最多的数
            • df.mode()
          • 查看数据的统计值(平均数、中位数等)
            • data.describe()
          • 返回Series中不重复的值
            • s.unique()
          • 判断索引是否重复
            • s.index.is_unique
          • 判断元素是否在Series中
            • s.isin(元素列表)
        • 子数据选择
          • 通过标签选择子数据(行)
            • data.loc[‘20150813’:‘20150921’]
          • 通过标签选择子数据
            • data.loc[行标签列表,列标签列表]
          • 通过数字索引选择子数据
            • data.iloc[2:5]
          • 通过索引标签访问单个位置值
            • data.at[行索引,列索引] # 索引为pandas原生数据结构
          • 通过索引编号方位单个位置值
            • data.iat[1,3]
          • data[data>0]
          • 深拷贝
            • data.copy()
          • 添加新的列
            • data[‘新的列名(之前没有)’] = 元素列表
          • 拼接
            • pd.concat(多个DataFrame列表)
            • pd.merge(df1,df2, on=‘属性名’) # 按属性名拼接
              • left_on = ‘列名’ # 通过索引进行外连接
              • right_index = True # 保留右表索引
          • 插入数据
            • df.append(s, ignore_index=True/False)
            • df.insert(位置索引,‘插入的列名’, 插入列表) # 改变原表
            • df.assign(新列名=列值列表)
        • 删除
          • def df[‘列名’]
          • df.pop(‘列名’)
        • 修改
          • 以上取出的值都为索引,可以直接赋值修改
          • 赋值单个常量,即所有元素都赋值为该常量
          • 赋值数组必须长度匹配
          • 行索引和列索引转换
            • df.stack()/unstack()
          • 为列名添加前缀
            • df.add_prefix(‘前缀’)
        • 空值
          • 删除有空数据的行
            • df.dropna()
          • 填充空数据
            • df.fillna(value=0)
          • 判断是否有空数据
            • pd.isnull(df).any().any()
          • 空值不参与计算
        • 基本运算
          • 平均值
            • df.mean(axis=)
          • 累加值
            • df.cumsum()
          • 减法
            • df.sub(s, axis=)
              • 若s只有一行或一列,则每一行/列都减去s
          • 求和
            • df.sum((level=) # 若有多级可加入level参数
          • 数据转置
            • data.T
          • 兼容所有numpy计算
        • 排序
          • 根据列标签排序
            • data.sort_index(axis=1, ascending=True#默认)
          • 根据行标签排序
            • data.sort_index(axis=0)
          • 通过某列的值进行排序
            • data.sort_values(by=‘列名’)
          • 计算Series中值的排名
            • s.rank(method=‘first’/‘average’)
        • 函数应用
          • 对每一列/行应用函数
            • df.apply(函数,axis=)
          • 对所有值应用函数
            • df.applymap(fun)
        • 索引
          • 重新索引
            • df.reindex(index=索引列表,colomns = list(df.colomns)#数据列表(, fill_value=)(, method=‘ffill’/‘bfill’))
          • 创建多级索引
            • a = [[‘a’, ‘a’, ‘a’, ‘b’, ‘b’, ‘c’, ‘c’],[1, 2, 3, 1, 2, 2, 3]]
            • t = list(zip(*a))
            • index = pd.MultiIndex.from_tuples(t, names=[‘l1’, ‘l2’])
          • 交换级索引
            • df.swaplevel(‘l1’, ‘l2’)
          • 根据第几级索引排序
            • df.sortlevel(num)
        • 分组
          • df.groupby(索引列表).sum()
          • 支持迭代
            • for 组名, 组 in df.groupby(索引列表):
          • 通过字典映射分组
            • mapping = {‘a’:red, ‘b’:‘red’, ‘c’:blue, ‘d’:‘orange’, ‘e’:‘blue’}
            • df.groupby(mapping, axis =1)
          • 通过函数分组
            • df.groupby(len)
          • 通过级分组
            • df.groupby(level=, axis= )
        • 聚合函数
          • 内置聚合函数
            • df.groupby().describe() # 包含所有内置函数结果
            • df.groupby().min()
            • df.groupby().max()
            • df.groupby().mean()
            • df.groupby().sum()
          • 自定义聚合函数
            • def peak_range(s):return s.max - s.min()
            • grouped.agg(peak_range)
          • 应用多个聚合函数
            • 对整个df
              • grouped.agg([‘std’, ‘mean’, ‘sum’, (‘range’,peak_range)]) # 函数名称即列名称,否则传入(‘列名’,函数)元组自定义列名
            • 不同列应用不同的聚合函数
              • 传递字典
              • d = {‘data1’:[‘mean’, peak_range], ‘data2’:‘sum’}
              • grouped.agg(g)
          • 聚合不把key作为索引
            • groupby(key, as_index=False).agg(d) # 加入as_index
            • 调用groupby().transform(聚合函数)
    • 文件

      • csv
        • pd.to_csv(’*.csv’)
        • pd.read_csv(’*.csv’, index_col = 0)
          • 参数
            • 定义空值:na_values={‘列名’:值列表}
            • 读取指定行数:nrows=
            • 一次读多少行(返回迭代器)
              • chunksize=
      • .dat
        • pd.read_table(‘filename.dat’, sep=, header =, names=, index_col=)
      • HDF5
      • Excel
      • JSON
      • NoSQL
    • 时间序列

      • 基础:python的datetime
      • 创建日期序列
        • pd.date_range(‘20190901’, periods=7, normalize=True, freq=‘24H’) # 包含从20190901及其以后7个间隔为24h(默认)的序列,并只保留到日
      • 时期
        • pd.Period(2010)
      • 创建时期序列
        • pd.period_range(‘20190901’, periods=7 , freq=‘24H’)
      • 频率转换
        • pd.Period.asfreq(‘频率标识’)
      • 重采样
        • ts.resample(‘5min’, how=‘sum’ label=‘left’/‘right’)
        • 统计开盘收盘
          • how=‘ohlc’
    • 数据可视化

      • notebook内显示
        • %matplotlib inline
      • 线型图
        • .plot(title=’’, style=’’, figsize=(,), subplot=True/False)
      • 柱状图
        • .plot.bar()
      • 直方图
        • .hist(bins=多少等分)
      • 概率密度
        • .plot.kde()
      • 散点图
        • .plot.scatter()
      • 饼图
        • .plot.pie()
  • 相关阅读:
    luogu 3388 【模板】割点(割顶)
    bzoj 3624 免费道路
    bzoj 1179 Atm
    bzoj 2428 均分数据
    luogu 4429 染色
    luogu 4427 求和
    luogu 1121 环状最大两段子段和
    hdu 4777 Queue
    hdu 5492 Find a path
    hdu 5441 Travel
  • 原文地址:https://www.cnblogs.com/linyk/p/12925975.html
Copyright © 2020-2023  润新知