数据科学包——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()
原文地址:https://www.cnblogs.com/linyk/p/12925975.html