python--Pandas高级处理


在这里插入图片描述

Pandas高级处理

  • 缺失值处理
  • 数据离散化
  • 合并
  • 交叉表与透视表
  • 分组与聚合
  • 综合案例

1. 高级处理-缺失值处理

1.1 如何进行缺失值处理

两种思路:
  1. 删除含有缺失值的样本
  2. 替换/插补
如何处理nan
  • 判断数据中是否存在NaN
    • pd.isnull(df)
    • pd.notnull(df)

在这里插入图片描述

  1. 删除含有缺失值的样本
    • df.dropna(inplace=False, axis='rows') 不会修改原数据,需要接受返回值
    • 替换/插补
    • df.fillna(value, inplace=False)
      • values : 替换成的值
      • inplace :True 会修改原数据 False 不会修改原数据,生成新的对象

在这里插入图片描述

不是缺失值nan,有默认标记的
  • 替换 ?-> np.nan
    • df.replace(to_replace="?", value=np.nan)
      • to_replace:替换前的值
      • value:替换后的值
  • 处理np.nan缺失值的步骤
# 读取数据
path = "https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data"
name = ["Sample code number", "Clump Thickness", "Uniformity of Cell Size", "Uniformity of Cell Shape", "Marginal Adhesion", "Single Epithelial Cell Size", "Bare Nuclei", "Bland Chromatin", "Normal Nucleoli", "Mitoses", "Class"]

data = pd.read_csv(path, names=name)

在这里插入图片描述

2. 高级处理-数据离散化

性别年龄
A123
B230
C118
物种毛发
A1
B2
C3

下边更合理

年龄
A1023
B0130
C1018
老鼠毛发
A1002
B0101
C1011

one-hot编码&哑变量

2.1 什么是数据的离散化

原始的身高数据:165,174,160,180,159,163,192,184

2.2 为什么要离散化

2.3 如何实现数据的离散化

  • 对数据进行分组
    • 自动分组sr=pd.qcut(data, bins)
    • 自定义分组sr=pd.cut(data, bins)
    • 对数据进行分组将数据分组一般会与value_counts搭配使用,统计每组的个数
      • series.value_counts() :统计分组次数
  • 将分组好的结果转换成one-hot编码
    • pd.get_dummies(data, prefix=None)
      • data: array-like, Series, or DataFrame
      • prefix: 分组名字
# 1)准备数据
data = pd.Series([165,174,160,180,159,163,192,184], index=['No1:165', 'No2:174','No3:160', 'No4:180', 'No5:159', 'No6:163', 'No7:192', 'No8:184']) 

在这里插入图片描述
在这里插入图片描述

3. 高级处理-合并

  • numpy
    • np.concatnate((a, b), axis=)
    • 水平拼接
      • np.hstack()
    • 竖直拼接
      • np.vstack()

  • 按方向拼接

    • pd.concat([data1, data2], axis=1)
      • 按照行或列进行合并,axis=0为列索引,axis=1为行索引
  • 按索引拼接

    • pd.merge实现合并
  • pd.merge(left, right, how="inner", on=[索引])
    在这里插入图片描述

在这里插入图片描述

4. 高级处理-交叉表与透视表

  • 找到、探索两个变量之间的关系

4.1 交叉表与透视表什么作用

4.2 使用crosstab(交叉表)实现

  • pd.crosstab(value1, value2)

4.3 pivot_table

在这里插入图片描述

5. 高级处理-分组与聚合

5.1 什么是分组与聚合

5.2 分组与聚合API

  • DataFrame.groupby(key, as_index=False)
    • key:分组的列数据,可以多个
  • 案例:不同颜色的不同笔的价格数据
col =pd.DataFrame({'color': ['white','red','green','red','green'], 'object': ['pen','pencil','pencil','ashtray','pen'],'price1':[5.56,4.20,1.30,0.56,2.75],'price2':[4.75,4.12,1.60,0.75,3.15]})

在这里插入图片描述

6. 综合案例

在这里插入图片描述

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

slience_me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值