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版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数