pandas.dropna/isnull/fillna/astype的用法

本文详细介绍了使用Pandas库进行数据清洗和处理的方法,包括如何删除无效数据、填充缺失值以及转换数据类型,提供了实用的代码示例,帮助读者掌握数据预处理的核心技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

删除表中的某一行或者某一列更明智的方法是使用drop,它不改变原有的df中的数据,而是返回另一个dataframe来存放删除后的数据。

(1)清理无效数据

df[df.isnull()]  #返回的是个true或false的Series对象(掩码对象),进而筛选出我们需要的特定数据。 
df[df.notnull()]  

df.dropna()     #将所有含有nan项的row删除 
df.dropna(axis=1,thresh=3)  #将在列的方向上三个为NaN的项删除 
df.dropna(how='ALL')        #将全部项都是nan的row删除

此处:print( data.dropna()) 和 print(data[data.notnull()]) 结果一样

(2)填充无效值

df.fillna(0) 
df.fillna({1:0, 2:0.5})         #对第一列nan值赋0,第二列赋值0.5 
df.fillna(method='ffill')   #在列方向上以前一个值作为值赋给Na

注意:凡是会对原数组作出修改并返回一个新数组的,往往都有一个 inplace可选参数。如果手动设定为True(默认为False),那么原数组直接就被替换。也就是说,采用inplace=True之后,原数组名(如2和3情况所示)对应的内存值直接改变;

而采用inplace=False之后,原数组名对应的内存值并不改变,需要将新的结果赋给一个新的数组或者覆盖原数组的内存位置(如1情况所示)。

(3)astype函数的使用:数据类型转换

df['Name'] = df['Name'].astype(np.datetime64)

DataFrame.astype() 方法可对整个DataFrame或某一列进行数据格式转换,支持Python和NumPy的数据类型。

 

转载于:https://www.cnblogs.com/nxf-rabbit75/p/9298110.html

我把你的复进去运行了,结果显示这样的,哪里错了,重新修改一下Traceback (most recent call last): File "<python-input-4>", line 51, in <module> rotate_business() ~~~~~~~~~~~~~~~^^ File "<python-input-4>", line 29, in rotate_business raise ValueError(f"客户 {client} 无可用业务员可分配") ValueError: 客户 nan 无可用业务员可分配 Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/pandas/core/indexes/base.py", line 3805, in get_loc return self._engine.get_loc(casted_key) ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^ File "index.pyx", line 167, in pandas._libs.index.IndexEngine.get_loc File "index.pyx", line 196, in pandas._libs.index.IndexEngine.get_loc File "pandas/_libs/hashtable_class_helper.pxi", line 7081, in pandas._libs.hashtable.PyObjectHashTable.get_item File "pandas/_libs/hashtable_class_helper.pxi", line 7089, in pandas._libs.hashtable.PyObjectHashTable.get_item KeyError: '客户姓名' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "<python-input-4>", line 117, in <module> rotate_business_assignment() ~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "<python-input-4>", line 62, in rotate_business_assignment clients = df['客户姓名'].tolist() ~~^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/pandas/core/frame.py", line 4102, in __getitem__ indexer = self.columns.get_loc(key) File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/pandas/core/indexes/base.py", line 3812, in get_loc raise KeyError(key) from err KeyError: '客户姓名'
03-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值