Python数据分析

Python数据分析 知识量:13 - 56 - 232

4.2 导入csv文件><

read_csv()- 4.2.1 -

对于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

指定编码格式- 4.2.2 -

上节示例中,在导入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

处理中文名称- 4.2.3 -

如果文件名、路径名称、字符串中含有中文汉字,Python在处理时很可能会报错,文件头部加上以下注释内容就可解决问题。

#!/usr/bin/python
#-*- coding:cp936 -*-

指定分隔符号- 4.2.4 -

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')

指定engine- 4.2.5 -

在调用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

指定读取行数- 4.2.6 -

如果只需要读取某些行,而不是全部行,可以通过参数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