pandas.read_table读取文件后设置DataFrame列名数据变为NaN解决

我的小程序:

待办计划:在不确定中前行

刚接触python,一段代码中用到:pandas.read_table()函数,这是一个读取一般带分隔符的函数,返回一个DataFrame类型。

一开始代码写成这样:data = pandas.read_table(r'./ml-100k/u.data'),打印出来是这样一些数据:

然后我想设置一些列名,于是这样写: data = pandas.DataFrame(data=data ,columns=['userid','itemid','rating','timestamp']),打印data:

数据直接变成了NaN,一开始一直以为DataFrame是不是用错了,试了各种不同的写法都没用。突然想到read_table读取文件的时候是不是可以直接设置列名的。于是回头又重新看了下read_table函数的官方文档,发现这个函数有一堆参数,简直不忍直视:

大概瞟了一眼参数,发现有个names参数,心想有戏,很有可能就是它设置列名,继续看详细参数说明:

虽然英语水平一般般,但第一句话还是看懂了:用作列名的一个列表。心想八九不离十就是它,有点小激动,立马改代码:

data = pd.read_table(r'./ml-100k/u.data',names=['userid','itemid','rating','timestamp']),打印data:

完美,就是这样!

随笔日记:祭那些逝去的时光

这段代码主要进行数据处理,包括读取csv文件、删除指定列和删除全为NaN的列。然后使用Imputer类对NaN值进行填充,填充方法为使用该列的平均值。最后将处理后的数据保存为新的csv文件。 具体代码解释如下: 1. import pandas as pd import numpy as np from sklearn.preprocessing import Imputer from sklearn.model_selection import train_test_split 导入所需的库和模块。 2. df_table_all = pd.read_csv("D:\python_pytharm\datasets\chapter3_data_handled\\train_all.csv", index_col=0) 使用pandas库中的read_csv()函数读取指定路径下的csv文件,将其存储为DataFrame格式,并将第一列作为索引列。 3. df_table_all = df_table_all.drop(['LOAN_DATE_x'], axis=1) df_table_all = df_table_all.drop(['LOAN_DATE_y'], axis=1) 使用drop()函数删除指定列。 4. df_table_all = df_table_all.dropna(axis=1,how='all') 使用dropna()函数删除全为NaN的列。 5. columns = df_table_all.columns 获取DataFrame列名。 6. imr = Imputer(missing_values='NaN', strategy='mean', axis=0) 创建Imputer对象,用于填充NaN值。missing_values参数指定需要填充的值,strategy参数指定填充方法,axis参数指定填充方向。 7. df_table_all = pd.DataFrame(imr.fit_transform(df_table_all.values)) 使用fit_transform()函数填充NaN值,并将其转换为DataFrame格式。 8. df_table_all.columns = columns 将DataFrame列名设置为原始列名。 9. df_table_all.to_csv("D:\python_pytharm\datasets\chapter3_data_handled\\trainafter.csv") 使用to_csv()函数将处理后的数据保存为新的csv文件。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值