gpt4 book ai didi

python - 研究 Pandas DataFrame 中的不同数据类型

转载 作者:行者123 更新时间:2023-12-01 05:11:35 26 4
gpt4 key购买 nike

我有 4 个文件想用 Python/Pandas 读取,这些文件是: https://github.com/kelsey9649/CS8370Group/tree/master/TaFengDataSet我删除了所有 4 个文件中的第一行(中文列标题)。但除此之外,这 4 个文件应该具有相同的格式。

现在我想读取它们并合并到一个大的 DataFrame 中。我尝试过使用

pars = {'sep':          ';',
'header': None,
'names': ['date','customer_id','age','area','prod_class','prod_id','amount','asset','price'],
'parse_dates': [0]}

df = pd.DataFrame()
for i in ('01', '02', '12', '11'):
df = df.append(pd.read_csv(cfg.abspath+'D'+i,**pars))

但是:文件 D11 为我提供了不同的单列格式,因此无法正确合并。该文件包含超过 200k 行,因此我无法轻松查找该文件中的问题,但如上所述,我假设它具有相同的格式,但显然格式存在一些细微差别。

现在调查问题的最简单方法是什么?显然,我无法检查该文件中的每一行...

当我读取3个工作文件并将它们合并时;并独立读取D11,该行

A = pd.read_csv(cfg.abspath+'D11',**pars)

仍然给我以下警告:

C:\Python27\lib\site-packages\pandas\io\parsers.py:1130: DtypeWarning: Columns (
1,4,5,6,7,8) have mixed types. Specify dtype option on import or set low_memory=
False.
data = self._reader.read(nrows)

在pandas中使用方法.info()(对于Adf)会产生:

<class 'pandas.core.frame.DataFrame'>
Int64Index: 594119 entries, 0 to 178215
Data columns (total 9 columns):
date 594119 non-null datetime64[ns]
customer_id 594119 non-null int64
age 594119 non-null object
area 594119 non-null object
prod_class 594119 non-null int64
prod_id 594119 non-null int64
amount 594119 non-null int64
asset 594119 non-null int64
price 594119 non-null int64
dtypes: datetime64[ns](1), int64(6), object(2)

<class 'pandas.core.frame.DataFrame'>
Int64Index: 223623 entries, 0 to 223622
Data columns (total 9 columns):
date 223623 non-null object
customer_id 223623 non-null object
age 223623 non-null object
area 223623 non-null object
prod_class 223623 non-null object
prod_id 223623 non-null object
amount 223623 non-null object
asset 223623 non-null object
price 223623 non-null object

即使我在导入时使用 dtype-option,我仍然会害怕错误/糟糕的结果,因为导入时可能会发生一些错误的数据类型转换!?

如何克服和解决这个问题?非常感谢

最佳答案

每当你遇到一个太无聊而无法手动完成的问题时,解决方案就是编写一个程序:

for col in ('age', 'area'):
for i, val in enumerate(A[col]):
try:
int(val)
except:
print('Line {}: {} = {}'.format(i, col, val))

这将显示文件中 agearea 列中具有非整数值的所有行。这是调试问题的第一步。一旦知道有问题的值是什么,您就可以更好地决定如何处理它们——也许通过预处理(清理)数据文件,或者使用一些 pandas 代码来选择和修复有问题的值。

关于python - 研究 Pandas DataFrame 中的不同数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24121983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com