zoukankan      html  css  js  c++  java
  • pandas学习笔记

    简介

    Pandas是一个能够提供快速、灵活和富有表现力的数据结构,旨在让处理“关系”和“标记”数据更加直观。
    Pandas适合的数据类型列表:

    • 具有异构类型的表格数据,如SQL表或Excel电子表格中
    • 有序和无序时间序列数据
    • 具有行和列标签的任意矩阵数据
    • 任何其他形式的观察/统计数据集

    Pandas的两个主要数据结构是Series(一维)和DataFrame(二维),用来处理金融、统计、社会科学和许多工程领域。对于R语言用户,DataFrame提供了R的data.frame提供的一切甚至更多。pandas是基于Numpy之上,旨在于许多其他第三方库能够很多的集成在计算机科学环境中。

    优点:

    • 轻松处理浮点和非浮点数据中缺失的数据(表示为NaN)
    • 大小可变性:可以丛DataFrame和更高维度的对象中插入和删除列
    • 自动和显示数据对齐:对象可以显式对齐到一组标签,或者用户只忽略标签,使得series、DataFrame等在计算中自动对齐数据
    • 强大、灵活的按功能分组,对数据集执行拆分应用组合,用于聚合和转换数据
    • 轻松将其他Python和NumPy 数据结构中不规则、不同索引的数据转换为DataFrame对象
    • 基于标签的智能切片、花式索引和大型数据集的子设置
    • 直观的合并和联接数据集
    • 数据集的灵活重塑和透视
    • 轴的分层标记(每个刻度可以有多个标签)
    • 强大的 IO 工具,用于从平面文件(CSV 和分隔)、Excel 文件、数据库加载数据,以及从超快HDF5 格式保存/加载数据
    • 时间序列-特定功能:日期范围生成和频率转换、移动窗口统计、移动窗口线性回归、日期偏移和滞后等。

    学习

    • 对象创建
      • 传递值列表创建Series,并让pandas创建整数索引
        s = pd.Series([1, 3, 5, np.nan, 6, 8])
      • 传递日期时间索引创建DataFrame
        dates = pd.date_range('20130101', periods=6)
      • 传递标记列的NumPy数组创建DataFrame
        df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
      • 传递可转换为类似series的字典对象创建为DataFrame
        df2 = pd.DataFrame({'A': 1.,
        'B': pd.Timestamp('20130102'),
        'C': pd.Series(1, index=list(range(4)), dtype='float32'),
        'D': np.array([3] * 4, dtype='int32'),
        'E': pd.Categorical(["test", "train", "test", "train"]),
        'F': 'foo'})
      • 查看各列dtype
        df2.dtypes
    • 查看数据
      • 查看底部行
        df.tail(3)
      • 查看顶部行
        df.head()
      • 查看索引
        df.index
      • 查看列
        df.columns
      • 显示数据的快速统计摘要
        df.describe()
      • 求数据的转置
        df.T
      • 按轴排序
        df.sort_index(axis=1, ascending=False)
      • 按值排序
        df.sort_values(by='B')
    • 选择
      • 索引和选择数据和多索引/高级索引
        • 选择单列
          df['A']
        • 通过[]对行进行切片操作
          df[0:3]
      • 按标签选择
        • 使用标签获取横截面
          df.loc[dates[0]]
        • 按标签在多轴上选择
          df.loc[:,['A','B']]
        • 显示标签切片,包含两个终结点
          df.loc['20130102':'20130104', ['A', 'B']]
        • 返回降维的对象
          df.loc['20130102', ['A', 'B']]
        • 获取标量值
          df.loc[dates[0], 'A']
        • 快速访问标量
          df.at[dates[0], 'A']
      • 按位置选择
        • 按位置选择
          df.iloc[3]
        • 通过整数切片
          df.iloc[3:5,0:2]
        • 通过整数位置列表
          df.iloc[[1,2,4][0,2]]
        • 显式切片行
          df.iloc[1:3,:]
        • 显式切片列
          df.iloc[:,1:3]
        • 显式获取值
          df.iloc[1,1]
        • 快速访问值
          df.iat[1,1]
      • 布尔索引
        • 使用单个列值来选择数据
          df[df.A > 0]
        • 从满足布尔条件的数据帧中选择值
          df[df > 0]
        • 使用isin进行选择
          df2[df2['E'].isin(['two', 'four'])]
      • 赋值
        • 设置新列会自动按索引对齐数据
          s1 = pd.Series([1, 2, 3, 4, 5, 6], index=pd.date_range('20130102', periods=6))
        • 标签赋值
          df.at[dates[0], 'A'] = 0
        • 索引赋值
          df.iat[0, 1] = 0
        • NumPy赋值
          df.loc[:, 'D'] = np.array([5] * len(df))
        • where设置赋值操作
          In [52]: df2 = df.copy()
          In [53]: df2[df2 > 0] = -df2
      • 数据缺失
        Pandas主要使用np.nan表示缺失的数据。
        • 重新编制索引允许您更改/添加/删除指定轴上的索引,这将返回数据的副本。
          df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])
          df1.loc[dates[0]:dates[1], 'E'] = 1
        • 删除缺失数据的行
          df1.dropna(how='any')
        • 填充缺失数据
          df1.fillna(value=5)
        • 获取值为nan的布尔蒙版
          In [60]: pd.isna(df1)
          Out[60]:
          A B C D F E
          2013-01-01 False False False False True False
          2013-01-02 False False False False False False
          2013-01-03 False False False False False True
          2013-01-04 False False False False False True
  • 相关阅读:
    C#中的async和await
    Windows 10 error code 0x80072efd
    Winform中调用js函数
    Windows 10 x64 安装 Visual Basic 6.0 SP6
    用谷歌浏览器来当手机模拟器
    Windows 10 解决 0x80070021 错误
    正则匹配所有中英文标点
    本地网站部署注意细节
    电信光猫 路由+拨号混合设置 备忘
    Restful 支持 自定义序列化
  • 原文地址:https://www.cnblogs.com/renwoixng/p/pandas-xue-xi-bi-ji.html
Copyright © 2011-2022 走看看