第七章 pandas进阶


     pandas内置来了10余种数据源读取函数和对应的数据写入函数,能够读写常见的数据源,如CSV、Excel、数据库等。(下面将推开数据分析的第一扇门)


python的tocsv的参数 python的to_csv函数_数据分析



文件读写

read_csv函数用于读取CSV文件。read_table也可以用来读取CSV文件,唯一的区别是分隔符默认为制表符“[Tab]”。使用to_csv方法将DataFrame数据写入CSV文件。

pandas提供read_excel函数来读取“xls”“xlsx”两种Excel文件,提供to_excel方法用于将DataFrame写入Excel文件。

统计分析

统计分析:统计分析是最常用的了解数据的手段,常见的统计方法有描述性系统分析、多元统计分析。下面介绍描述性方法和移动窗口对象,其中移动窗口主要用于时间序列处理。

  1. 描述性分析:描述性分析是最常用的用来概括、表述事物整体状况以及事物间关联、类属关系的统计方法,通过几个统计值简洁地表示了一组数据的集中程度和离散程度。
  2. 移动窗口rolling方法:为了提升数据的准确性,将某个点的取值扩大到包含这个点的一段区间,用区间来进行判断,这个区间就是窗口。pandas提供的rolling方法可用于对DataFrame进行移动窗口操作。
  3. 累计计算:cummax,依次给出前n个数的最大值; cummin,依次给出前n个数的最小值; cumprod,依次给出前n个数的乘积; cumsum,依次给出前n个数的和。

分组对象GroupBy

pandas提供分组对象GroupBy,配合相关运算方法能够实现特定的分组运算目的。

  1. agg方法灵活多变,即可针对所有的特征一次进行相同的聚合,也可以根据特征选择不同的聚合方法,且能用于DataFrame与Series,是聚合操作时最常用的方法。
  2. apply方法由于能够同时返回标量和数组,在返回结果为数组时使用最佳。
  3. transform是最特殊的的一种方法,使用场景也很特殊,主要有组内标准化等,使用频率较低。

交叉表和透视表

使用pivot_table函数创建透视表,使用crosstab函数用于制作交叉表。

数据处理

缺失值处理

pandas提供insull方法,能够识别出缺失值,返回bool。Insull方法结合其他操作,找出缺失值的数量及占比。

  1. 删除法:删除法分为删除观测记录和删除特征两种,观测记录指删除行,特征指删除列,减少样本量来换取信息完整度。使用dropna函数实现参数控制。
  2. 替换法:替换法是指用一个特定的值来替换缺失值。缺失值为数值型时,通常用其均值、中位数和众数等描述其集中趋势的统计量来替代缺失值; 缺失值所在特征为类别型时,则选择用众数来替换缺失值。使用fiillna方法替换。
  3. 插值法:interpolate方法用于对缺失值进行插值。

重复数据处理

重复数据处理是机器学习经常面对的问题之一,drop_duplicates方法用于去除一个或多个特征的重复记录。
使用该方法去重时,默认对所有特征起作用,即只有所有特征的重复记录对应的索引(行)相同的情况下才会执行去除操作,除了能够针对所有特征去重外,还能够针对某个或某几个特征进行去重,只需要将特定的特征名称传给subset参数即可。

数据离散化

某些算法,如ID3决策树算法和Apriori算法等,要求数据是离散化的,此时就需要将连续型特征(数值型)转换成离散型特征(类别型),即连续特征离散化。常用的离散化方法有3种:等宽法、等频法和通过聚类分析离散化(一维)。

哑变量

哑变量又称虚拟变量,通常取0或1。在机器学习中,将类别型转换成数值型经常使用。

第七章课后题概述

  1. D
    read_spl_table传入的是表名,只能读取一个表格,接收的数据无sql类型; pandas共有3个数据读写函数,分别是read_sql(既能查询也能读表)、read_sql_table(只能读表)和read_sql_query(只能查询); 使用这些函数,均需要先建立数据库连接。
  2. ABCD
    read_excel能够读取xls后缀的文件,read_sql能够读取数据库的数据,to_csv方法能够将DataFrame写入CSV,to_sql方法能够将DataFrame写入数据库。
  3. C
    pandas常用描述性统计方法包括:min 最小值; mean 均值; std 标准差;cov 协方差;mode 众数;kurt 样本峰值;count 非空值数目;max 最大值;median 中位数;var 方差; sem 标准误差; skew 样本偏度; quantile 四分位数; mad 平均绝对误差。
  4. A
    window接收int或offset,表示移动窗口的大小,当接收offset时,它是每个窗口的时间段,此时的索引必须为时间类型。
  5. A
    agg方法只能返回标量值,apply才能既返回标量值也返回数组; agg方法可接收NumPy函数,可对分组的不同列指定作用的函数,可同时接收多个函数。
  6. ACD
    GroupBy对象提供分组运算步骤中的拆分功能,groupby方法用于创建分组对象GroupBy,其中参数by被称为分组键,分组键的目的是产生一组用于拆分对象的值。
  7. D
    使用pivot_table函数制作透视表时,index接收str或list,表示行分组值,默认为None;columns接收str或list,表示列分组键,默认为None。
  8. BCD
    insull方法只能够识别出缺失值,返回bool; dropna通过参数控制,既可以删除观测记录,也可以删除特征; fiillna方法用于替换缺失值,特征可分为数值型和类别型,当两者出现缺失时,处理方法是不一样的; interpolate方法用于对缺失值进行插值,并提供了linear(线性插值),time(时间插值),Index、values(索引插值)多种插值方式。
  9. B
    drop_duplicate方法去除数据中的重复记录,默认对所有特征起作用,但也能够针对某个或几个特征进行去重,只需将指定的特征名称传给subset参数即可。该方法对DataFrame和Series类型的数据有效,数据有重复时默认保留第一个数据,该函数不会改变原始数据排列。
  10. D
    连续数据离散化的方法的处理方法包括等宽法、等频法和使用聚类算法。其中Apriori算法是一种常用的数据关联规则挖掘方法。
  11. 填空题
    (1)read_csv函数用于设置分隔符的参数是sep
    (2)使用描述性统计方法(describe)能够一次性得出DataFrame所有数值型特征的非空值数目、均值、四分位数、标准差。
    (3)pivot_table函数默认的聚合函数是mean。(均值)
    (4)创建交叉表的函数是crosstab。
    (5)常用的哑变量处理函数是get_dummies。
  12. 数据离散化
# 等宽法
import pandas as pd
s = pd.cut([5,10,11,13,15,35,50,55,72,92,204,215], bins=4)
print(s)
[(4.79, 57.5], (4.79, 57.5], (4.79, 57.5], (4.79, 57.5], (4.79, 57.5], ..., (4.79, 57.5], (57.5, 110.0], (57.5, 110.0], (162.5, 215.0], (162.5, 215.0]]
Length: 12
Categories (4, interval[float64, right]): [(4.79, 57.5] < (57.5, 110.0] < (110.0, 162.5] <
                                           (162.5, 215.0]]
  1. 分组
#创建DataFrame
import pandas as pd
import numpy as np
d = {'CPU':['i7', 'i5', 'i3', 'i5', 'i7','i3'],'主频':[4.2, 3.2, 2.2, 2.8, 4.0,2.8],'核心数目':[8, 4, 2, 4, 6,2],'价格':[9999,6799,3888,5799,8755,4355]}
df = pd.DataFrame(d)
print(df)

#分组聚合
df1 = df.groupby('CPU').agg(lambda x: np.max(x) if x.name =='主频' else  np.min(x))
df1.columns=['最大主频','最小核心数目','最低价格']
print(df1)
CPU   主频  核心数目    价格
0  i7  4.2     8  9999
1  i5  3.2     4  6799
2  i3  2.2     2  3888
3  i5  2.8     4  5799
4  i7  4.0     6  8755
5  i3  2.8     2  4355

     最大主频  最小核心数目  最低价格
CPU                    
i3    2.8       2  3888
i5    3.2       4  5799
i7    4.2       6  8755
  1. 写入文件操作
df1.to_csv('C:\\Users\\Lenovo\\Desktop\\df1.csv',encoding='gbk')

python的tocsv的参数 python的to_csv函数_python_02