建议收藏:12个Pandas数据处理高频操作

简介: 建议收藏:12个Pandas数据处理高频操作

简说Python,号主老表,Python终身学习者,数据分析爱好者,从18年开始分享Python知识,原创文章227篇,写过Python、SQL、Excel入门文章,也写过Web开发、数据分析文章,老表还总结整理了一份2022Python学习资料和电子书资源,关注后私信回复:2022 即可领取。

简单说说

Panda是一个快速、强大、灵活且易于使用的开源数据分析和操作工具,在Python环境下,我们可以通过pip直接进行安装。

pip install pandas

在Python代码中使用pandas首先需要导入,:

import pandas as pd

创建一个示例数据:

# 统计一行/一列数据的负数出现的次数
df = pd.DataFrame(
    {'a':[1,-3,0,1,3],
     'b':[-1,0,1,5,1],
     'c':[0,-2,0,-9,0]})
df

image.png

总结分享

> 1 统计一行/一列数据的负数出现的次数

# 获取到每一行的复数个数
# 要获取列的话,将axis改成0即可
num_list = (df < 0).astype(int).sum(axis=1)
num_list

image.png

> 2 让dataframe里面的正数全部变为0

# 直接了当
df[df>0] = 0
df

image.png

> 3 统计某列中各元素出现次数

  • 默认情况,直接统计出指定列各元素值出现的次数。
# 默认情况,统计b列各元素出现次数
df['b'].value_counts()

image.png

  • 最好奇的bins参数,按bins分割区间,统计落在各区间内元素个数
# 按指定区间个数bin,元素起始值分割区间,统计表格中落在各区间内元素个数
df['b'].value_counts(bins=3)

image.png

  • normalize参数,计算各元素出现次数占比
# normalize参数 出现次数/总数据个数 
df['b'].value_counts(normalize=True)

image.png

还有sort和ascending,可以按指定方式对统计结果进行排序。

> 4 修改表头和索引

  • 修改表头名称
# 修改表头名称
columns = {'a': 'A', 'b': 'B'}
df.rename(columns=columns, inplace=True)
df

image.png

  • 设置特殊索引
# 设置特殊索引
df.index = ['a', 'b', 'c', 'd', 'e']
df

image.png

  • 删除索引
# 删除索引
df.reset_index(drop=True, inplace=True)
df

image.png

> 5 修改列所在位置insert+pop

insert在指定位置插入某列值;pop按列名取出某列(同时会删掉该列)。

# 将A列移到最后
# 新增列位置,新增列名,新增列的数值
df.insert(2,'A',df.pop('A'))
df

image.png

> 6 常用查询方法query

  • 直接查询
# 找出c所有c值小于0的行
df.query("c<0")

image.png

  • query+contains模糊查询
# 插入一列
df.insert(0,'name',['张三', '张华', '李四', '王五', '李逵'])
# 查找名字里包含三、四、五的用户数据
df.query("name.str.contains('三|四|五')", engine='python')

image.png

> 7 数据存储时不要索引

设置index为None即可。

df.to_csv('测试数据.csv', encoding='utf-8-sig', index=None)

image.png

> 8 按指定列排序sort_values

sort_values函数,通过by参数可以指定按哪些列进行排序,还可以设置ascending指定排序方式(升序或者降序,默认降序)

# by 指定排序列 na_position nan值放的位置 开头还是尾部
df.sort_values(by=['name'],na_position='first')

image.png

> 9 apply 函数运用

# A B 两列都每个元素值都+1
df[['A', 'B']].apply(lambda x:x+1)

image.png

其他更高级应用,可以查看之前分享的文章Pandas数据分析,你不能不知道的技能

image.png

DataFrame.apply(func, 
axis=0, broadcast=False, 
raw=False, reduce=None, args=(), **kwds)

> 10 Pandas数据合并

进行数据合并前,首先需要确定合并的数据的表头都是一致的,然后将他们依次加入一个列表,最终使用concat函数即可进行数据合并。

# 现将表构成list,然后再作为concat的输入
df1 = df[0:1]
df2 = df[2:4]
df3 = df[3:5]
frames = [df1, df2, df3]
df4 = pd.concat(frames)
df4

image.png

> 11 Pandas Dataframe拷贝

  • 深拷贝,df1改变,df不会变
# 深拷贝,df1改变,df不会变
df1 = df.copy(deep=True)
print(f"df\n{df}\ndf1\n{df1}")

image.png

  • 将原数据df的name列的第一个元素改为zs,会发现,df改动,不会影响df1。
df['name'][0] = 'zs'
print(f"df\n{df}\ndf1\n{df1}")

image.png

  • 浅拷贝,df2改变,df也会变  等同df2 = df
# 浅拷贝,df2改变,df也会变  等同df2 = df
df2 = df.copy(deep=False)
print(f"df\n{df}\ndf2\n{df2}")
  • 将原数据df的name列的第一个元素改为张三,会发现,df改动,df2也会一起改动。
df['name'][0] = '张三'
print(f"df\n{df}\ndf2\n{df2}")

image.png

关于深浅拷贝相关介绍和应用,大家可以查看之前的分享别再弄不清Python 深拷贝和浅拷贝了!

> 12 对于列/行的操作

  • 删除指定行/列
# 行索引/列索引 多行/多列可以用列表
# axis=0表示行 axis=1表示列 inplace是否在原列表操作 
# 删除df中的c列
df.drop('c', axis=1, inplace=True)
df

image.png

  • 取出指定列/行
# 不知道列名,取出表格最后两列
df3 = df.iloc[:, -2:]  
# 知道列名,取出name和A两列
df4 = df.loc[:, ['name', 'A']]  
print(f"df3\n{df3}\ndf4\n{df4}")

image.png

# 重新设置下索引
df.index = ['a1', 'a2', 'a3', 'a4', 'a5']
# 不知道行索引,取出表格前两行
df5 = df.iloc[:2, :]  
# 知道行索引,取出a1和a3两行
df6 = df.loc[['a1', 'a3'], :]  
print(f"df5\n{df5}\ndf6\n{df6}")

image.png

  • 交换两列指定值
# 将B列中小于0的元素和A列交换
# 筛选出B列中小于0的行
flag = df['B'].astype(int).map(lambda x: x<0)
# 通过布尔提取交换两列数据
df.loc[flag, 'B'], df.loc[flag, 'A'] = df.loc[flag, 'A'], df.loc[flag, 'B']
df

image.png

好啦,今天的分享就到这里啦,下会有新的积累,再分享给大家,也欢迎大家留言区留言说说你平时pandas用的比较多的操作呀~互相学习,才能一起进步,更快的进步。

相关文章
|
24天前
|
监控 物联网 数据处理
Pandas高级数据处理:数据流式计算
本文介绍了如何使用 Pandas 进行流式数据处理。流式计算能够实时处理不断流入的数据,适用于金融交易、物联网监控等场景。Pandas 虽然主要用于批处理,但通过分块读取文件、增量更新 DataFrame 和使用生成器等方式,也能实现简单的流式计算。文章还详细讨论了内存溢出、数据类型不一致、数据丢失或重复及性能瓶颈等常见问题的解决方案,并建议在处理大规模数据时使用专门的流式计算框架。
149 100
Pandas高级数据处理:数据流式计算
|
19天前
|
数据可视化 数据挖掘 数据处理
Pandas高级数据处理:交互式数据探索
Pandas 是数据分析中常用的数据处理库,提供了强大的数据结构和操作功能。本文从基础到高级,逐步介绍 Pandas 中交互式数据探索的常见问题及解决方案,涵盖数据读取、检查、清洗、预处理、聚合分组和可视化等内容。通过实例代码,帮助用户解决文件路径错误、编码问题、数据类型不一致、缺失值处理等挑战,提升数据分析效率。
80 32
|
17天前
|
数据采集 数据可视化 数据处理
Pandas高级数据处理:数据仪表板制作
《Pandas高级数据处理:数据仪表板制作》涵盖数据清洗、聚合、时间序列处理等技巧,解决常见错误如KeyError和内存溢出。通过多源数据整合、动态数据透视及可视化准备,结合性能优化与最佳实践,助你构建响应快速、数据精准的商业级数据仪表板。适合希望提升数据分析能力的开发者。
67 31
|
4天前
|
缓存 数据可视化 BI
Pandas高级数据处理:数据仪表板制作
在数据分析中,面对庞大、多维度的数据集(如销售记录、用户行为日志),直接查看原始数据难以快速抓住重点。传统展示方式(如Excel表格)缺乏交互性和动态性,影响决策效率。为此,我们利用Python的Pandas库构建数据仪表板,具备数据聚合筛选、可视化图表生成和性能优化功能,帮助业务人员直观分析不同品类商品销量分布、省份销售额排名及日均订单量变化趋势,提升数据洞察力与决策效率。
27 12
|
20天前
|
存储 安全 数据处理
Pandas高级数据处理:数据安全与隐私保护
在数据驱动的时代,数据安全和隐私保护至关重要。本文探讨了使用Pandas进行数据分析时如何确保数据的安全性和隐私性,涵盖法律法规要求、用户信任和商业价值等方面。通过加密、脱敏、访问控制和日志审计等技术手段,结合常见问题及解决方案,帮助读者在实际项目中有效保护数据。
62 29
|
7天前
|
数据可视化 数据挖掘 数据处理
Pandas高级数据处理:数据可视化进阶
Pandas是数据分析的强大工具,能高效处理数据并与Matplotlib、Seaborn等库集成,实现数据可视化。本文介绍Pandas在绘制基础图表(如折线图)和进阶图表(如分组柱状图、热力图)时的常见问题及解决方案,涵盖数据准备、报错处理、图表优化等内容,并通过代码案例详细解释,帮助读者掌握数据可视化的技巧。
36 13
|
6天前
|
数据采集 SQL 数据可视化
Pandas高级数据处理:交互式数据探索
Pandas是Python中流行的数据分析库,提供丰富的数据结构和函数,简化数据操作。本文从基础到高级介绍Pandas的使用,涵盖安装、读取CSV/Excel文件、数据查看与清洗、类型转换、条件筛选、分组聚合及可视化等内容。掌握这些技能,能高效进行交互式数据探索和预处理。
19 6
|
13天前
|
消息中间件 数据挖掘 数据处理
Pandas高级数据处理:数据流式计算
在大数据时代,Pandas作为Python强大的数据分析库,在处理结构化数据方面表现出色。然而,面对海量数据时,如何实现高效的流式计算成为关键。本文探讨了Pandas在流式计算中的常见问题与挑战,如内存限制、性能瓶颈和数据一致性,并提供了详细的解决方案,包括使用`chunksize`分批读取、向量化操作及`dask`库等方法,帮助读者更好地应对大规模数据处理需求。
50 17
|
5天前
|
数据采集 存储 数据可视化
Pandas高级数据处理:数据报告生成
Pandas 是数据分析领域不可或缺的工具,支持多种文件格式的数据读取与写入、数据清洗、筛选与过滤。本文从基础到高级,介绍如何使用 Pandas 进行数据处理,并解决常见问题和报错,如数据类型不一致、时间格式解析错误、内存不足等。最后,通过数据汇总、可视化和报告导出,生成专业的数据报告,帮助你在实际工作中更加高效地处理数据。
21 8
|
14天前
|
数据挖掘 数据处理 开发者
Pandas高级数据处理:实时数据处理
本文介绍了Pandas在实时数据处理中的应用,涵盖基础概念、常见问题及解决方案。Pandas是Python中强大的数据分析库,支持流式读取和增量更新数据,适用于大规模数据集的处理。通过分块读取、数据类型优化等方法,可有效解决内存不足等问题。文中还提供了代码示例,帮助读者更好地理解和掌握Pandas在实时数据处理中的使用技巧。
54 15