Python 数据分析— Pandas 基本操作(中)

2024-09-04 03:28

本文主要是介绍Python 数据分析— Pandas 基本操作(中),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 学习内容:
    • 一、 创建数据透视表
    • 二、表格合并操作
    • 三、表格分组操作
    • 四、Series 值映射
    • 五、替换 DataFrame 或 Series 中的值


学习内容:

一、 创建数据透视表

pivot_table(values=需聚合的列名默认所有数值列, index=行分组键(数组) [, columns=列上分组的键, aggfunc='sum’求和 | 'mean’均值 默认 | … ,fill_value=空值填充])

df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo","bar", "bar", "bar", "bar"],"B": ["one", "one", "one", "two", "two","one", "one", "two", "two"],"C": ["small", "large", "large", "small","small", "large", "small", "small","large"],"D": [1, 2, 2, 3, 3, 4, 5, 6, 7],"E": [2, 4, 5, 5, 6, 6, 8, 9, 9]})
'''df结构:A	B	C		D	E
0	foo	one	small	1	2
1	foo	one	large	2	4
2	foo	one	large	2	5
3	foo	two	small	3	5
4	foo	two	small	3	6
5	bar	one	large	4	6
6	bar	one	small	5	8
7	bar	two	small	6	9
8	bar	two	large	7	9'''
df.pivot_table(index='A') # 根据列'A'创建数据透视表
'''输出:D	E
A		
bar	5.5	8.0
foo	2.2	4.4'''
# 以C为列分组,创建A、B的数据透视表,包括D列的和、数量、均值
df.pivot_table('D',index=['A','B'],columns='C',aggfunc=['sum',np.alen,'mean'])
'''输出:sum				alen			meanC	large	small	large	small	large	small
A	B						
bar	one	4.0		5.0		1.0		1.0		4.0		5.0two	7.0		6.0		1.0		1.0		7.0		6.0
foo	one	4.0		1.0		2.0		1.0		2.0		1.0two	NaN		6.0		NaN		2.0		NaN		3.0'''
#在前有基础上,将所胡NaN填充为0
df.pivot_table('D',index=['A','B'],columns='C',aggfunc=['sum',np.alen,'mean'],fill_value=0)
'''输出:sum				alen			meanC	large	small	large	small	large	small
A	B						
bar	one	4.0		5.0		1.0		1.0		4.0		5.0two	7.0		6.0		1.0		1.0		7.0		6.0
foo	one	4.0		1.0		2.0		1.0		2.0		1.0two	0		6.0		0		2.0		0		3.0'''

二、表格合并操作

pd.merge(left=左表(或Series) , right=右表, how=连接方式’left’按左键 | 'right’按右键 | ‘outer’ 左右键并集| ‘inner’左右键交集默认 | ‘cross’按两表笛卡尔集, on=共有键标签, left_on=左键标签(或left_index=True左表行索引), right_on=右键标签(或 right_index=True右表行索引), suffixes=同名标签后缀默认为[’_x’, ‘_y’]) -> DataFrame
注:当左右表有多个同名键时,同名键相乘组合

df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz', 'lfoo'],'value': [1, 2, 3, 5]})
'''df1结构:lkey	value
0	foo		1
1	bar		2
2	baz		3
3	foo		5'''
df2 = pd.DataFrame({'rkey': ['foo', 'bar', 'baz', 'rfoo'],'value': [5, 6, 7, 8]})
'''df2结构:rkey	value
0	foo		5
1	bar		6
2	baz		7
3	foo		8'''
pd.merge(df1,df2,left_on='lkey',right_on='rkey') # 两表交集
'''输出:lkey	value_x	rkey	value_y
0	foo		1		foo		5
1	bar		2		bar		6
2	baz		3		baz		7'''
pd.merge(df1,df2,left_on='lkey',right_on='rkey',how='left') # 左表索引,右表无时为NaN
'''输出:lkey	value_x	rkey	value_y
0	foo		1		foo		5.0
1	bar		2		bar		6.0
2	baz		3		baz		7.0
3	lfoo	5		NaN		NaN'''

三、表格分组操作

groupby(by=分组标签[, axis=分割方向0行默认 | 1列]) -> DataFrameGroupBy[Scalar]

df = pd.DataFrame({'动物名': ['Falcon', 'Falcon','Parrot', 'Parrot'],'类型':['Captive', 'Wild', 'Captive', 'Wild'],'速度': [380., 370., 24., 26.]})
'''df结构:动物	类型	速度
0	鹰	豢养	380.0
1	鹰	野生	370.0
2	鹦鹉	豢养	24.0
3	鹦鹉	野生	26.0'''
a = df.groupby('动物') # 按动物名分组
#a是:<pandas.core.groupby.generic.DataFrameGroupBy object at 0x7f74d710b8>
list(a)
'''输出:
[('鹰',动物  类型     速度0  鹰  豢养	  380.01  鹰  野生	  370.0),('鹦鹉',动物  类型    速度2  鹦鹉  豢养 	 24.03  鹦鹉  野生 	 26.0)]'''

利用get_group函数获取指定组数据

df.groupby('动物').get_group('鹦鹉')
'''输出:动物	类型	速度
2	鹦鹉	豢养	24.0
3	鹦鹉	野生	26.0'''

利用agg函数,对分组数据进行后序操作
求和(sum)、均值(mean)、中位数(median)、计数(count)、去重后个数(nunique)等

a = df.groupby('动物')
a.agg('max')
'''输出:类型	速度
动物		
鹦鹉	野生	26.0
鹰	野生	380.0'''

四、Series 值映射

map(映射关系, na_action=空值处理None同样映射,默认 | 'ignore’不传递) -> Series[S2@map]
DataFrame变量.列索引 -> 返回该列 Series 对象
1. 根据字典对应关系生成新序列

s = pd.Series(['cat', 'dog', np.nan, 'rabbit'])
'''s结构:
0       cat
1       dog
2       NaN
3    rabbit
dtype: object'''
s.map({'cat':'猫', 'dog':'狗', 'rabbit':'兔'})
'''输出:
0      猫
1      狗
2    NaN
3      兔
dtype: object'''

2. 格式化生成新序列

s.map('I am a {}'.format) # 不跳过空值
'''输出:
0       I am a cat
1       I am a dog
2       I am a nan
3    I am a rabbit
dtype: object'''
s.map('I am a {}'.format,na_action='ignore') # 跳过空值
'''输出:
0       I am a cat
1       I am a dog
2              NaN
3    I am a rabbit
dtype: object'''

五、替换 DataFrame 或 Series 中的值

replace( to_replace = 原值, value=新值, inplace=是否在原位置更改True是 | False否 默认) -> None

df = pd.DataFrame({'名称':['产品1','产品2','产品3','产品4','产品5'],'单价':[5,3,'N',7,2],'合计':[15,12,'N','S',8]})
'''df结构:名称		单价	合计
0	产品1	5	15
1	产品2	3	12
2	产品3	N	N
3	产品4	7	S
4	产品5	2	8'''
df.replace('N',0) # 将表格中的N替换为0,原表不变,输出
'''	名称		单价	合计
0	产品1	5	15
1	产品2	3	12
2	产品3	0	0
3	产品4	7	S
4	产品5	2	8'''
df.replace({'N':0, 'C':21},inplace=True) #将表中的N替换为0,S替换为21,在原表中更改
'''df=名称		单价	合计
0	产品1	5	15
1	产品2	3	12
2	产品3	0	0
3	产品4	7	21
4	产品5	2	8'''

这篇关于Python 数据分析— Pandas 基本操作(中)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134862

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

pandas数据过滤

Pandas 数据过滤方法 Pandas 提供了多种方法来过滤数据,可以根据不同的条件进行筛选。以下是一些常见的 Pandas 数据过滤方法,结合实例进行讲解,希望能帮你快速理解。 1. 基于条件筛选行 可以使用布尔索引来根据条件过滤行。 import pandas as pd# 创建示例数据data = {'Name': ['Alice', 'Bob', 'Charlie', 'Dav

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

Python QT实现A-star寻路算法

目录 1、界面使用方法 2、注意事项 3、补充说明 用Qt5搭建一个图形化测试寻路算法的测试环境。 1、界面使用方法 设定起点: 鼠标左键双击,设定红色的起点。左键双击设定起点,用红色标记。 设定终点: 鼠标右键双击,设定蓝色的终点。右键双击设定终点,用蓝色标记。 设置障碍点: 鼠标左键或者右键按着不放,拖动可以设置黑色的障碍点。按住左键或右键并拖动,设置一系列黑色障碍点

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目