当前位置: 首页 > news >正文

pandas 常用45个操作方法(详解)

1、query函数进行数据筛选

相当于 bool 索引

 data.query("Graduate_year==2020 & Language=='Java'")
 ​
 df.query("Language in ['CPP','C','C#']")
 pandas.DataFrame.query(self, expr, inplace = False, **kwargs)
 ​
 Expr  评估查询字符
 inplace=False   修改数据还是修改后的副本
 Kwargs   关键字
 关键字

需要指定两个或多个条件进行过滤的方式

and:回在满足两个条件的所有记录

or:返回满足任意条件的所有记录

2、显示操作

pd.set_option("display.max_columns", None) # 显示所有的列,而不是以……显示 pd.set_option("display.max_rows", None) # 显示所有的行,而不是以……显示 pd.set_option("display.width", None) # 不自动换行显示

pd.set_option ('display.max_colwidth',500)#最大列宽50个字符,解决列宽不足导致的字体显示不完整

pd.set_option( 'display.precision',2)#浮点数保留两位小数

pd.set_option('display.float_format','{:,}'.format)#设置数据格式:逗号分隔浮点型

3、isin() 的用法

判断某列中是否含有指定字符

 print(df[df["Language"].isin(["CPP", "C", "C#"])])     

4、value_counts 和分组求和的区别

value_counts()不会排序,顺序会原样输出,

分组求和会改变原有的顺序

 print(data.groupby("Language").count()["Nowcoder_ID"])
 print(data["Language"].value_counts())

5、where 函数

DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=False)

  • cond:条件表达式或可调用函数,用于筛选数据。如果条件为真,则保留原始数据,否则用 other 参数指定的值进行替换。

  • other:可选参数,用于替换不满足条件的元素,默认为 NaN。

  • inplace:可选参数,表示是否在原地修改 DataFrame,默认为 False,即返回一个新的 DataFrame。如果设置为 True,则在原始 DataFrame 上进行修改。

  • axis:可选参数,表示在哪个轴上应用条件,可以是 0 或 1。默认为 None,表示在所有轴上应用条件。

  • level:可选参数,用于多级索引时,指定在哪个级别上应用条件。

  • errors:可选参数,用于处理条件表达式中的错误。可以设置为 'raise'、'ignore' 或 'coerce'。

  • try_cast:可选参数,表示是否尝试将条件表达式的结果转换为布尔类型。

 ​
 # 创建示例 DataFrame
 import pandas as pd
 import numpy as np
 ​
 data = {'A': [1, 2, 3, 4, 5],
 'B': [6, 7, 8, 9, 10]}
 df = pd.DataFrame(data)
 ​
 # 在列方向上应用条件
 result = df.where(df < 3, other=np.nan, axis=1)
 print(result)
 ​
 ​

6、unique() 和 nunique()

 #返回不同值的个数
 print(data["Language"].nunique())
 #返回不同值
 print(data["Language"].unique())

7、reset_index()用法

reset_index() 方法是 pandas 中用于重置索引的函数。它可以将多级索引转换为默认的整数索引,并将多级索引中的标签移动到数据框的列中。

reset_index() 方法有几个常用的参数,下面是对它们的说明:

  • level:指定要重置的索引级别的名称或级别号。如果不指定,则默认重置所有索引级别。可以传递单个级别的名称或级别号,也可以传递包含多个级别名称或级别号的列表。

  • drop:指定是否要删除被重置的索引。如果设置为 True,则会删除被重置的索引并丢弃它们;如果设置为 False,则将被重置的索引添加为一列保留。

  • inplace:指定是否在原始数据框上进行就地修改。如果设置为 True,则会直接修改原始数据框,而不返回新的数据框副本;如果设置为 False,则会返回一个重置索引后的新数据框副本,默认为 False。

 import pandas as pd
 ​
 # 创建示例数据
 data = {'Name': ['Alice', 'Gill', 'Bob', 'Emily', 'Carol', 'David', 'Firth'],
         'Age': [30, 35, 25, 45, 35, 40, 20],
         'City': ['Beijing', 'Paris', 'Beijing', 'Tokyo', 'Sydney', 'Beijing', 'Paris'],
         'Gender': ['Female', 'Female', 'Male', 'Female', 'Male', 'Female', 'Male'],
         'Salary': [4500, 3500, 3000, 3500, 2500, 4000, 2500]}
 ​
 df = pd.DataFrame(data)
 ​
 # 按照 'City' 和 'Gender' 列进行分组
 grouped = df.groupby(['City', 'Gender'])
 ​
 # 对分组计算平均年龄和最大薪水
 result = grouped.agg({'Age': 'mean', 'Salary': 'max'})
 print(result)
 ​
 reseted_index = result.reset_index()
 print(reseted_index)

8、describle()用法

 用法:DataFrame.describe(percentiles=None, include=None, exclude=None)
 ​
 percentiles:它是一个可选参数, 它是一个列表, 如数字的数据类型, 应在0到1之间。其默认值为[.25, .5, .75], 它返回第25、50和75个百分位数。
 ​
 include:它也是一个可选参数, 在描述DataFrame时包括数据类型列表。其默认值为无。
 ​
 exclude:它也是一个可选参数, 在描述DataFrame时不包括数据类型列表。其默认值为无
 ​

统计值变量说明

count:数量统计,此列共有多少有效值 mean:均值 std :标准差 min:最小值 25%:四分之一分位数 50%:二分之一分位数 75%:四分之三分位数 max:最大值

df.describe(include=‘O’) ,当输入include=['O'],会计算离散型变量的统计特征,此参数是 ‘all’ 的时候会把数值型和离散型特征的统计都进行显示。

describe()函数自动计算的字段有

1、count(非空值数)

2、unique(唯一值数)

3、top(频数最高者)

4、freq(最高频数)

9、quantitle()用法

DataFrame.quantile(q=0.5, axis=0, numeric_only=True, interpolation='linear')q 参数指定所需的分位数,取值范围为 0 到 1 之间的小数
axis 参数指定沿着哪个轴进行计算,默认为 0 可以计算每列的分位数
numeric_only 参数指定是否只计算数字类型的数据,默认为 True 表示只计算数字类型的数据
interpolation 参数指定插值方法,可选项包括 'linear'(默认)、'lower'、'higher'、'midpoint' 和 'nearest'。
import pandas as pddf = pd.DataFrame(np.random.randint(0, 100, size=(100, 5)), columns=['A', 'B', 'C', 'D', 'E'])
q1 = df.quantile(q=0.25)
q3 = df.quantile(q=0.75)print("每列数据的第一四分位数:\n", q1)
print("每列数据的第三四分位数:\n", q3)

10、ptp() 函数计算极差

#计算极差
print(data[data["Level"]==7]["Achievement_value"].values.ptp())

11、计算某列中,每个值的长度

#如果没有其它字符干扰
print(data["Name"].str.len())
print(data["Name"].apply(len))

12、缺失值删除,dropna的相关参数

axis: Axis = 0,              0是行,1是列,axis: axis参数默认为0('index'),按行删除,即删除有空值的行。将axis参数修改为1或‘columns’,则按列删除,即删除有空值的列
在实际的应用中,一般不会按列删除,例如数据中的一列表示年龄,不能因为年龄有缺失值而删除所有年龄数据。
how: str = "any",      		 any 只要含有就删除,all 是全部为 空则删除   
thresh=None,           		 thresh= n 表示保留至少含有n个非na数值的行
subset: IndexLabel = None,   #指定列,指定判断缺失值的列范围,删除空值时,只判断subset指定的列(或行)的子集,其他列(或行)中的空值忽略,不处理
inplace: bool = False,       #表示直接修改原DataFrame,inplace: 默认为False,返回原数据的一个副本。将inplace参数修改为True,则会修改数据本身。

14、缺失值查看

#查看每列缺失值个数
print(data.isnull().sum())# 每行有多少个缺失值
df.isnull().sum(1)# 总共有多少个缺失值
df.isnull().sum()#查看每列数据中缺失值的比例
print(data.apply(lambda x: sum(x.isnull())/len(x),axis=0))

15、缺失值填充

DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
#value:需要用什么值去填充缺失值
#axis:确定填充维度,从行开始或是从列开始
#method:填充缺失值所用的方法。
#limit:确定填充的个数,如果limit=2,则只填充两个缺失值。
#inplac
http://www.lryc.cn/news/228205.html

相关文章:

  • PHP判断扫码支付扫码条码支付宝微信区分
  • 一文了解芯片测试项目和检测方法 -纳米软件
  • 【npm 错误】:npm ERR! code ERESOLVE、npm ERR! ERESOLVE could not resolve问题
  • 【FastCAE源码阅读8】调用gmsh生成网格
  • 使用LLM-Tuning实现百川和清华ChatGLM的Lora微调
  • 浏览器标签页之间的通信
  • Semantic Kernel 学习笔记1
  • 图像二值化阈值调整——Triangle算法,Maxentropy方法
  • 监控视频片段合并完整视频|FFmpeg将多个视频片段拼接完整视频|PHP自动批量拼接合并视频
  • client-go controller-runtime kubebuilder
  • 【vue 如何解决响应式丢失】
  • Selenium alert 弹窗处理!
  • 有关自动化的脚本思考 python 按键 javascript
  • CKA认证模块②-K8S企业运维和落地实战-2
  • SpectralDiff论文阅读笔记
  • selenium基本使用、无头浏览器(chrome、FireFox)、搜索标签
  • Html 引入element UI + vue3 报错Failed to resolve component: el-button
  • sen2cor安装
  • 通付盾Web3专题 | SharkTeam:Web3安全实践与创新
  • ARM Linux 基础学习 / Ubuntu 下的包管理 / apt工具
  • springcloudalibaba入门详细使用教程
  • C# DirectoryInfo类的用法
  • IDEA常用快捷键大全(详解)
  • 设计模式之解释器模式
  • 粉够荣获淘宝联盟区域理事会常务理事,携手共铸淘客新生态
  • Python爬虫是否合法?
  • 3.2 IDAPro脚本IDC常用函数
  • 用python将csv表格数据做成热力图
  • 【程序基础】递归法
  • AI 绘画 | Stable Diffusion WebUI的基本设置和插件扩展