当前位置:
首页 > temp > python入门教程 >
-
python--Pandas高级处理
Pandas高级处理
- 缺失值处理
- 数据离散化
- 合并
- 交叉表与透视表
- 分组与聚合
- 综合案例
1. 高级处理-缺失值处理
1.1 如何进行缺失值处理
两种思路:
- 删除含有缺失值的样本
- 替换/插补
如何处理nan
-
判断数据中是否存在NaN
-
pd.isnull(df)
-
pd.notnull(df)
-
-
删除含有缺失值的样本
-
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. 高级处理-数据离散化
性别 | 年龄 | |
---|---|---|
A | 1 | 23 |
B | 2 | 30 |
C | 1 | 18 |
物种 | 毛发 | |
---|---|---|
A | 1 | |
B | 2 | |
C | 3 |
下边更合理
男 | 女 | 年龄 | |
---|---|---|---|
A | 1 | 0 | 23 |
B | 0 | 1 | 30 |
C | 1 | 0 | 18 |
狗 | 猪 | 老鼠 | 毛发 | |
---|---|---|---|---|
A | 1 | 0 | 0 | 2 |
B | 0 | 1 | 0 | 1 |
C | 1 | 0 | 1 | 1 |
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. 综合案例
出处:https://www.cnblogs.com/Slience-me/p/15173034.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数