建议收藏: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用的比较多的操作呀~互相学习,才能一起进步,更快的进步。

相关文章
|
2月前
|
Python
如何使用Python的Pandas库进行数据透视图(melt/cast)操作?
Pandas的`melt()`和`pivot()`函数用于数据透视。基本步骤:导入pandas,创建DataFrame,然后使用这两个函数变换数据。示例代码:导入pandas,定义一个包含&#39;Name&#39;和&#39;Age&#39;列的DataFrame,使用`melt()`转为长格式,再用`pivot()`恢复为宽格式。
66 1
|
2月前
|
数据可视化 数据挖掘 数据处理
进阶 pandas DataFrame:挖掘高级数据处理技巧
【5月更文挑战第19天】本文介绍了Pandas DataFrame的高级使用技巧,包括数据重塑(如`pivot`和`melt`)、字符串处理(如提取和替换)、日期时间处理(如解析和时间序列操作)、合并与连接(如`merge`和`concat`),以及使用`apply()`应用自定义函数。这些技巧能提升数据处理效率,适用于复杂数据分析任务。推荐进一步学习和探索Pandas的高级功能。
|
2月前
|
数据处理 索引 Python
使用pandas的merge()和join()函数进行数据处理
使用pandas的merge()和join()函数进行数据处理
55 2
|
2天前
|
机器学习/深度学习 数据采集 大数据
驾驭大数据洪流:Pandas与NumPy在高效数据处理与机器学习中的核心作用
【7月更文挑战第13天】在大数据时代,Pandas与NumPy是Python数据分析的核心,用于处理复杂数据集。在一个电商销售数据案例中,首先使用Pandas的`read_csv`加载CSV数据,通过`head`和`describe`进行初步探索。接着,数据清洗涉及填充缺失值和删除异常数据。然后,利用`groupby`和`aggregate`分析销售趋势,并用Matplotlib可视化结果。在机器学习预处理阶段,借助NumPy进行数组操作,如特征缩放。Pandas的数据操作便捷性与NumPy的数值计算效率,共同助力高效的数据分析和建模。
|
1天前
|
机器学习/深度学习 数据采集 数据处理
重构数据处理流程:Pandas与NumPy高级特性在机器学习前的优化
【7月更文挑战第14天】在数据科学中,Pandas和NumPy是数据处理的关键,用于清洗、转换和计算。用`pip install pandas numpy`安装后,Pandas的`read_csv`读取数据,`fillna`处理缺失值,`drop`删除列。Pandas的`apply`、`groupby`和`merge`执行复杂转换。NumPy加速数值计算,如`square`进行向量化操作,`dot`做矩阵乘法。结合两者优化数据预处理,提升模型训练效率和效果。
|
1天前
|
数据采集 机器学习/深度学习 数据处理
从基础到卓越:Pandas与NumPy在复杂数据处理中的实战策略
【7月更文挑战第14天】Pandas与NumPy在数据科学中的核心应用:**加载数据(如`read_csv`)、探索(`head()`, `info()`, `describe()`)、数据清洗(`fillna`, `dropna`, `replace`, `apply`)、数值计算(借助NumPy的`ndarray`)、分组聚合(`groupby`与聚合函数)、窗口函数(如`rolling`)和数据筛选排序(布尔索引,`query`,`sort_values`)。通过这些工具,实现从数据预处理到复杂分析的高效处理。
6 0
|
2天前
|
数据处理 Python
数据科学进阶之路:Pandas与NumPy高级操作详解与实战演练
【7月更文挑战第13天】探索数据科学:Pandas与NumPy提升效率的高级技巧** - Pandas的`query`, `loc`和`groupby`用于复杂筛选和分组聚合,例如筛选2023年销售额超1000的记录并按类别计总销售额。 - NumPy的广播和向量化运算加速大规模数据处理,如快速计算两个大数组的元素级乘积。 - Pandas DataFrame基于NumPy,二者协同加速数据处理,如将DataFrame列转换为NumPy数组进行标准化再回写,避免链式赋值。 掌握这些高级操作,实现数据科学项目的效率飞跃。
8 0
|
2月前
|
数据挖掘 数据处理 Python
【Python DataFrame 专栏】深入探索 pandas DataFrame:高级数据处理技巧
【5月更文挑战第19天】在 Python 数据分析中,pandas DataFrame 是核心工具。本文介绍了几个高级技巧:1) 横向合并 DataFrame;2) 数据分组与聚合;3) 处理缺失值;4) 数据重塑;5) 条件筛选;6) 使用函数处理数据。掌握这些技巧能提升数据处理效率和分析深度,助你更好地发掘数据价值。
【Python DataFrame 专栏】深入探索 pandas DataFrame:高级数据处理技巧
|
1月前
|
存储 数据挖掘 数据处理
19. Python 数据处理之 Pandas
19. Python 数据处理之 Pandas
35 1
|
1月前
|
数据采集 安全 数据处理
Python采集数据处理:利用Pandas进行组排序和筛选
使用Python的Pandas库,结合亿牛云代理和多线程技术,提升网络爬虫数据处理效率。通过代理IP避免封锁,多线程并发采集,示例代码展示数据分组、排序、筛选及代理IP配置和线程管理。
Python采集数据处理:利用Pandas进行组排序和筛选