数据分析实战——05丨Python科学计算:Pandas

Lexan 2020-04-30

  • Pandas 可以对数据进行导入、清洗、处理、统计和输出
    • 在 NumPy 中数据结构是围绕 ndarray 展开的
    • 那么在 Pandas 中的Series 和 DataFrame 这两个核心数据结构,他们分别代表着一维的序列和二维的表结构
  • Series 是个定长的字典序列
    • 说是定长是因为在存储的时候,相当于两个 ndarray,这也是和字典结构最大的不同
    • 因为在字典的结构里,元素的个数是不固定的
  • Series有两个基本属性:index 和 values
    • 在 Series 结构中,index 默认是 0,1,2,……递增的整数序列,当然我们也可以自己来指定索引,比如 index=[‘a’, ‘b’, ‘c’, ‘d’]
    • import pandas as pd
    • from pandas import Series, DataFrame
    • x1 = Series([1,2,3,4])
  • DataFrame 类型数据结构类似数据库表
    • 它包括了行索引和列索引,我们可以将 DataFrame 看成是由相同索引的 Series 组成的字典类型
  • 数据导入和输出
    • Pandas 允许直接从 xlsx,csv 等文件中导入数据,也可以输出到 xlsx, csv 等文件,非常方便。
    • import pandas as pd
    • from pandas import Series, DataFrame
    • score = DataFrame(pd.read_excel(‘data.xlsx‘))
    • score.to_excel(‘data1.xlsx‘)
    • print score
    • 需要说明的是,在运行的过程可能会存在缺少 xlrd 和 openpyxl 包的情况,到时候如果缺少了,可以在命令行模式下使用“pip install”命令来进行安装
  • 数据清洗
    • 1. 删除 DataFrame 中的不必要的列或行
      • Pandas 提供了一个便捷的方法 drop() 函数来删除我们不想要的列或行
      • 比如我们想把“语文”这列删掉
      • df2 = df2.drop(columns=[‘Chinese‘])
      • 想把“张飞”这行删掉。
      • df2 = df2.drop(index=[‘ZhangFei‘])
    • 2. 重命名列名 columns,让列表名更容易识别
      • 如果你想对 DataFrame 中的 columns 进行重命名,可以直接使用 rename(columns=new_names, inplace=True) 函数
      • 比如我把列名 Chinese 改成 YuWen,English 改成 YingYu。
      • df2.rename(columns={‘Chinese‘: ‘YuWen‘, ‘English‘: ‘Yingyu‘}, inplace = True)
    • 3. 去重复的值
      • 数据采集可能存在重复的行,这时只要使用 drop_duplicates() 就会自动把重复的行去掉。
      • df = df.drop_duplicates() # 去除重复行
    • 4. 格式问题
      • 更改数据格式
        • 这是个比较常用的操作,因为很多时候数据格式不规范,我们可以使用 astype 函数来规范数据格式,比如我们把 Chinese 字段的值改成 str 类型,或者 int64 可以这么写:
        • df2[‘Chinese‘].astype(‘str‘)
        • df2[‘Chinese‘].astype(np.int64)
      • 数据间的空格
        • 有时候我们先把格式转成了 str 类型,是为了方便对数据进行操作,这时想要删除数据间的空格,我们就可以使用 strip 函数:
        • # 删除左右两边空格
        • df2[‘Chinese‘]=df2[‘Chinese‘].map(str.strip)
        • # 删除左边空格
        • df2[‘Chinese‘]=df2[‘Chinese‘].map(str.lstrip)
        • # 删除右边空格
        • df2[‘Chinese‘]=df2[‘Chinese‘].map(str.rstrip)
        • 如果数据里有某个特殊的符号,我们想要删除怎么办?同样可以使用 strip 函数,比如 Chinese 字段里有美元符号,我们想把这个删掉,可以这么写:
        • df2[‘Chinese‘]=df2[‘Chinese‘].str.strip(‘$‘)
      • 大小写转换
        • 大小写是个比较常见的操作,比如人名、城市名等的统一都可能用到大小写的转换,在 Python 里直接使用 upper(), lower(), title() 函数,方法如下:
        • # 全部大写
        • df2.columns = df2.columns.str.upper()
        • # 全部小写
        • df2.columns = df2.columns.str.lower()
        • # 首字母大写
        • df2.columns = df2.columns.str.title()
      • 查找空值
        • 数据量大的情况下,有些字段存在空值 NaN 的可能,这时就需要使用 Pandas 中的 isnull 函数进行查找
        • 如果我们想看下哪个地方存在空值 NaN,可以针对数据表 df 进行 df.isnull()
    • 使用 apply 函数对数据进行清洗
      • apply 函数是 Pandas 中自由度非常高的函数,使用频率也非常高
  • 数据统计
    • Pandas 和 NumPy 一样,都有常用的统计函数,如果遇到空值 NaN,会自动排除
    • 数据分析实战——05丨Python科学计算:Pandas
  • 数据表合并
    • 有时候我们需要将多个渠道源的多个数据表进行合并,一个 DataFrame 相当于一个数据库的数据表,那么多个 DataFrame 数据表的合并就相当于多个数据库的表合并
    • 两个 DataFrame 数据表的合并使用的是 merge() 函数
  • 如何用 SQL 方式打开 Pandas
    • 在 Python 里可以直接使用 SQL 语句来操作 pandasql
    • pandasql 中的主要函数是 sqldf,它接收两个参数:一个 SQL 查询语句,还有一组环境变量 globals() 或 locals()
  • 总结
    • 数据分析实战——05丨Python科学计算:Pandas

相关推荐