当前位置:  开发笔记 > 编程语言 > 正文

pandas.read_csv中dtype和转换器之间有什么区别?

如何解决《pandas.read_csv中dtype和转换器之间有什么区别?》经验,为你挑选了1个好方法。

pandas函数read_csv()读取.csv文件.它的文档在这里

根据文件,我们知道:

dtype:列的类型名称或字典 - > type,default无数据或列的数据类型.例如{'a':np.float64,'b':np.int32}(不支持engine ='python')

converter:dict,default无用于转换某些列中的值的函数的字典.键可以是整数或列标签

使用此功能时,我可以调用 pandas.read_csv('file',dtype=object)pandas.read_csv('file',converters=object).显然,转换器,它的名字可以说数据类型将被转换,但我想知道dtype的情况?



1> EdChum - Rei..:

语义差异dtype允许您指定如何处理值,例如,数字或字符串类型.

转换器允许您使用转换函数解析输入数据以将其转换为所需的dtype,例如,将字符串值解析为datetime或其他所需的dtype.

在这里,我们看到pandas试图嗅探类型:

In [2]:
df = pd.read_csv(io.StringIO(t))
t="""int,float,date,str
001,3.31,2015/01/01,005"""
df = pd.read_csv(io.StringIO(t))
df.info()


Int64Index: 1 entries, 0 to 0
Data columns (total 4 columns):
int      1 non-null int64
float    1 non-null float64
date     1 non-null object
str      1 non-null int64
dtypes: float64(1), int64(2), object(1)
memory usage: 40.0+ bytes

您可以从上面看到001并被005视为int64但日期字符串保持为str.

如果我们说一切都object基本上一切都是str:

In [3]:    
df = pd.read_csv(io.StringIO(t), dtype=object).info()


Int64Index: 1 entries, 0 to 0
Data columns (total 4 columns):
int      1 non-null object
float    1 non-null object
date     1 non-null object
str      1 non-null object
dtypes: object(4)
memory usage: 40.0+ bytes

在这里,我们强制intstr并告诉parse_dates使用date_parser来解析日期列:

In [6]:
pd.read_csv(io.StringIO(t), dtype={'int':'object'}, parse_dates=['date']).info()


Int64Index: 1 entries, 0 to 0
Data columns (total 4 columns):
int      1 non-null object
float    1 non-null float64
date     1 non-null datetime64[ns]
str      1 non-null int64
dtypes: datetime64[ns](1), float64(1), int64(1), object(1)
memory usage: 40.0+ bytes

同样,我们可以传递to_datetime函数来转换日期:

In [5]:
pd.read_csv(io.StringIO(t), converters={'date':pd.to_datetime}).info()


Int64Index: 1 entries, 0 to 0
Data columns (total 4 columns):
int      1 non-null int64
float    1 non-null float64
date     1 non-null datetime64[ns]
str      1 non-null int64
dtypes: datetime64[ns](1), float64(1), int64(2)
memory usage: 40.0 bytes

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有