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使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操