Python 获取Pandas read_csv()读入的数据类型字典
我有一个从SQL数据库导入的大熊猫数据框架。整个过程需要几个小时。当我处理数据时,不可避免地会改变数据帧,我经常想回到“已知良好的数据集”并重新运行各种函数。我不想从数据库中导入数据,而是想将分析过程中各个点的数据保存为CSV文件,然后根据需要使用CSV文件恢复数据;CSV是首选的格式,因为出于某种原因,我没有太多的运气来处理数据帧。只需使用pd.read_CSV()导入CSV数据即可更改列的数据类型。因此,我想创建一个数据类型字典,当将CSV导入回数据帧时,可以使用它来恢复数据类型 例如,简单数据帧的定义如下所示:Python 获取Pandas read_csv()读入的数据类型字典,python,pandas,csv,dataframe,types,Python,Pandas,Csv,Dataframe,Types,我有一个从SQL数据库导入的大熊猫数据框架。整个过程需要几个小时。当我处理数据时,不可避免地会改变数据帧,我经常想回到“已知良好的数据集”并重新运行各种函数。我不想从数据库中导入数据,而是想将分析过程中各个点的数据保存为CSV文件,然后根据需要使用CSV文件恢复数据;CSV是首选的格式,因为出于某种原因,我没有太多的运气来处理数据帧。只需使用pd.read_CSV()导入CSV数据即可更改列的数据类型。因此,我想创建一个数据类型字典,当将CSV导入回数据帧时,可以使用它来恢复数据类型 例如,简单
df = pd.DataFrame({'A':[1,2,3,4,5],'B':['a','b','c','d','e'],'C':[1.2,3.4,5.6,7.8,9.0]},index=[0,2,4,6,8])
这看起来像:
A B C
0 1 a 1.2
2 2 b 3.4
4 3 c 5.6
6 4 d 7.8
8 5 e 9.0
可以使用以下方法创建数据类型字典:
dtypesDict = df.dtypes.to_dict()
产生:
{'B': dtype('O'), 'C': dtype('float64'), 'A': dtype('int64')}
如果我尝试使用此输出在硬代码中定义字典,以便可以使用它设置使用pd.read\u csv()
导入的列的数据类型,则失败如下:
dtypesDict = {'B': dtype('O'), 'C': dtype('float64'), 'A': dtype('int64')}
NameError: name 'dtype' is not defined
但是,将字典定义为:
dtypesDict = {'B': 'O', 'C': 'float64', 'A': 'int64'}
允许导入CSV文件而不会出现问题
我认为理解词典是一种方法,但我无法做到:
dtypesDict = {k:bit_in_brackets_of_v for k,v in df.dtypes.to_dict().items()}
如何自动生成一个格式正确的字典,该字典可以使用简单的剪切粘贴过程在硬代码中定义,并允许正确设置从CSV导入的列的数据类型?您可以使用
zip
执行dict
,使用dtype.name
dict(zip(list(df),[df[x].dtype.name for x in df]))
Out[6]: {'A': 'int64', 'B': 'object', 'C': 'float64'}
为了确保列名与其数据类型之间的一致性:
dict(([(dataframe[x].name, dataframe[x].dtype.name) for x in dataframe]))
对于CSV导入或pickle变得痛苦的大型数据帧,请使用。或者是熊猫的较新的
dask
或ray
后端(“光线上的熊猫:通过替换一行代码使熊猫[>=4x]更快”)