pd.read_csv加载数据缺失值处理na_values与数据为空的填充。

该博客介绍了如何在使用pandas读取CSV文件时指定缺失值,并解决因存在NaN导致的数据转换错误。通过设置`na_values`参数,可以将特定值(如'-1')标记为缺失值进行处理。当尝试将包含缺失值的列转换为整数类型时,会出现`Cannot convert non-finite values (NA or inf) to integer`的错误。解决方法是先使用`fillna`函数填充缺失值,例如用100替换NaN,然后再进行数据类型转换。

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

指定缺失值的填充值

利用pd.read_csv读取文件加载时,默认会将文件中缺失的数据自动填充为NaN,如果想指定哪些值作为缺失数据来处理,则可以利用里面的na_values参数。

import pandas as pd
data=pd.read_csv("./selectRefer10PerClass0317.txt",sep='\t')

data.head() 

指定字符串'-1'也做为缺失值来处理

import pandas as pd
data=pd.read_csv("./selectRefer10PerClass0317.txt",sep='\t',na_values='-1')

data.head()

数据为空的转换错误

问题: 使用data_df['col2'].astype(int)出现Cannot convert non-finite values (NA or inf) to integer 

原因分析: 查看数据后发现是由于col2列中有些记录是空的,为值Nan,所以没法转换成int。

解决方案:

将此列的空值以指定值去填充 fillna函数。如以100

data_df['col2']=data_df['col2'].fillna(100)

data_df['col2'].astype(int)

data_df=pd.DataFrame([[1,2,3],[None,None,2]])
print(data_df)
# data_df[1].astype(int) # 报错  Cannot convert non-finite values (NA or inf) 
data_df[1]=data_df[1].fillna(100)
data_df[1].astype(int) # 不在报错
print(data_df)

鸣谢与参考:

(20200410已解决)ValueError: Cannot convert non-finite values (NA or inf) to integer_quantLearner的博客-CSDN博客

如果你的数据集中存在缺失值(通常表示为 `NaN` 或者 `None`),在使用 `pandas.read_csv()` 函数读取时,可以设置一些参数来处理它们。以下是几种常见的处理方式: 1. **忽略**(默认):跳过含有缺失值的行或列,可以使用 `na_filter=False` 参数禁用这一行为,然后手动检查数据是否存在缺失值。 ```python df = pd.read_csv('file.csv', na_filter=False) ``` 2. **填充**(Fill):用指定的值(默认为 `NaN`)替换缺失值。你可以提供一个常数值、序列、函数名,或者使用 `fillna()` 函数进行更复杂的填充规则。 ```python # 使用常数填充 df = pd.read_csv('file.csv', na_values='NaN', fill_value=0) # 使用前一行的值填充 df['column_name'] = df['column_name'].fillna(method='ffill') # 自定义函数填充 df['column_name'] = df['column_name'].apply(custom_function) ``` 3. **删除**:如果整个记录都是缺失值,可以选择删除含有所有缺失值的行,使用 `dropna()` 方法。 ```python df = pd.read_csv('file.csv').dropna(how='all') ``` 4. **插值**(Interpolate):对连续的缺失值进行估计,`pandas` 提供了一些内置的插值方法,如线性插值 (`interpolate`) 或指数平滑 (`smoothing_method` 参数)。 ```python df = pd.read_csv('file.csv', na_values='NaN').interpolate() ``` 在使用以上操作之前,你应该先了解数据集的缺失值模式以及它们可能带来的影响,以便选择最合适的处理策略。 相关问题: 1. 插值方法有哪些,分别适用于什么样的情况? 2. 如何避免在数据分析过程中引入由于处理缺失值而产生的偏差? 3. pandas 中如何检测和统计缺失值的数量?
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值