zoukankan      html  css  js  c++  java
  • 数据分析实战——05丨Python科学计算:Pandas

    • 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,会自动排除
    • 数据表合并
      • 有时候我们需要将多个渠道源的多个数据表进行合并,一个 DataFrame 相当于一个数据库的数据表,那么多个 DataFrame 数据表的合并就相当于多个数据库的表合并
      • 两个 DataFrame 数据表的合并使用的是 merge() 函数
    • 如何用 SQL 方式打开 Pandas
      • 在 Python 里可以直接使用 SQL 语句来操作 pandasql
      • pandasql 中的主要函数是 sqldf,它接收两个参数:一个 SQL 查询语句,还有一组环境变量 globals() 或 locals()
    • 总结
  • 相关阅读:
    Spring框架中的单例bean是线程安全的吗?
    Spring Cloud 解决了哪些问题?
    服务端处理 Watcher 实现 ?
    内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?
    vue-router点击同一个页面异常处理
    mybatis代码生成+自定义注解+自定义注释
    lombok使用
    idea格式化设置
    寒假每周总结4
    寒假每日日报27
  • 原文地址:https://www.cnblogs.com/minimalist/p/12807351.html
Copyright © 2011-2022 走看看