Python数据分析 知识量:13 - 56 - 232
对于csv格式文件,可以使用read_csv()函数导入其数据,其参数是待读取文件的路径。同样需要路径名称前加一个“r”。
import pandas as pd df=pd.read_csv(r"D:\PythonTestFile\population.csv") print(df)
运行结果为:
Name Code [YR2017] [YR2018] [YR2019] 0 �й� CHN 1386395000 1392730000 1397715000 1 ���ô� CAN 36543321 37057765 37589262 2 ӡ�� IND 1338658835 1352617328 1366417754 3 ����� KOR 51361911 51606633 51709098 4 ���� BRA 207833831 209469333 211049527 5 �¹� DEU 82657002 82905782 83132799
上节示例中,在导入csv文件时,出现了乱码,因为导入时没有指定字符编码格式。
Python中用得比较多的编码格式是UTF-8和gbk,默认是UTF-8。而csv(逗号分隔)(*.csv)格式的文件通常使用gbk编码格式,因此与Python默认的编码不一致。想要消除乱码,通过将参数encoding设置为“gbk”即可。
import pandas as pd df=pd.read_csv(r"D:\PythonTestFile\population.csv",encoding='gbk') print(df)
运行结果为:
Name Code [YR2017] [YR2018] [YR2019] 0 中国 CHN 1386395000 1392730000 1397715000 1 加拿大 CAN 36543321 37057765 37589262 2 印度 IND 1338658835 1352617328 1366417754 3 大韩民国 KOR 51361911 51606633 51709098 4 巴西 BRA 207833831 209469333 211049527 5 德国 DEU 82657002 82905782 83132799
如果文件名、路径名称、字符串中含有中文汉字,Python在处理时很可能会报错,文件头部加上以下注释内容就可解决问题。
#!/usr/bin/python #-*- coding:cp936 -*-
csv文件默认以逗号分隔,但是有的文件是以空格或其他形式分隔的,导入这样的文件时需要通过参数sep指定分隔符号。
1、不指定分隔符号的情况。
下面手动建立一个csv文件(new_p.csv),默认使用UTF-8编码格式,且以两个空格分隔各数据项。
Name Code [YR2017] [YR2018] [YR2019] 中国 CHN 1386395000 1392730000 1397715000 加拿大 CAN 36543321 37057765 37589262
读取程序如下:
import pandas as pd df=pd.read_csv(r"D:\PythonTestFile\new_p.csv") print(df) print(df.columns)
运行结果为:
Name Code [YR2017] [YR2018] [YR2019] 0 中国 CHN 1386395000 1392730000 1397715000 1 加拿大 CAN 36543321 37057765 37589262 Index(['Name Code [YR2017] [YR2018] [YR2019]'], dtype='object')
如上所示,没有设置分隔符时,每行信息都被读取为一个整体的数据项。
2、设置分隔符号。
将分隔符设为两个空格就可以得到正确的解析对象。
import pandas as pd df=pd.read_csv(r"D:\PythonTestFile\new_p.csv",sep=' ') print(df) print(df.columns)
运行结果为:
Name Code [YR2017] [YR2018] [YR2019] 0 中国 CHN 1386395000 1392730000 1397715000 1 加拿大 CAN 36543321 37057765 37589262 Index(['Name', 'Code', '[YR2017]', '[YR2018]', '[YR2019]'], dtype='object')
在调用read_csv()函数时,pandas模块默认调用C语言作为解析语言。由于“C”引擎不支持regex分隔符,上节示例虽然得到了正确的解析对象,实际上还是会出现警告信息。解决办法就是设置参数engine为Python,即将“C”引擎切换为“Python”引擎。
import pandas as pd df=pd.read_csv(r"D:\PythonTestFile\new_p.csv",sep=' ',engine='python') print(df)
运行结果为:
Name Code [YR2017] [YR2018] [YR2019] 0 中国 CHN 1386395000 1392730000 1397715000 1 加拿大 CAN 36543321 37057765 37589262
如果只需要读取某些行,而不是全部行,可以通过参数nrows来设置。设置为几就读取几行。
import pandas as pd df=pd.read_csv(r"D:\PythonTestFile\population.csv",encoding='gbk',nrows=3) print(df)
运行结果为:
Name Code [YR2017] [YR2018] [YR2019] 0 中国 CHN 1386395000 1392730000 1397715000 1 加拿大 CAN 36543321 37057765 37589262 2 印度 IND 1338658835 1352617328 1366417754
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6