Python数据分析

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

4.1 导入Excel数据><

read_excel()- 4.1.1 -

使用pandas模块导入数据需要用到read_x()方法,其中x代表待导入的文件格式。

Excel在工作中是很常用的工具,其文件格式以.xlsx为后缀,早期版本是.xls。在pandas中对应的读取函数是read_excel(),其参数是待读取文件的路径。需要注意的是:路径名称前需要加一个“r”,以避免路径里面的\被转义。如果不加“r”,就需要把路径里面的所有\转换成/。

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\population.xlsx")
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

指定Sheet- 4.1.2 -

Excel文件(工作簿)可能含有多个Sheet(工作表),在导入时,如果不指定Sheet,默认导入工作簿的第1个工作表。也可以通过设置sheet-name参数来指定Sheet。

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\population.xlsx",sheet_name='Sheet2')
print(df)

运行结果为:

    Name Code   [YR2017]   [YR2018]   [YR2019]
0    意大利  ITA   60536709   60421760   60297396
1     日本  JPN  126785797  126529100  126264931
2     法国  FRA   66864379   66965912   67059887
3     美国  USA  324985539  326687501  328239523
4     英国  GBR   66058859   66460344   66834405
5  俄罗斯联邦  RUS  144496740  144477860  144373535

除了使用Sheet的名称外,也可以使用Sheet的顺序,从0开始计数。

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\population.xlsx",sheet_name=1)
print(df)

运行结果与上面的一样。

指定行索引- 4.1.3 -

导入Excel文件后,DataFrame对象会使用从0开始的默认行索引。可以通过参数index_col指定其他索引。

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\population.xlsx",index_col='Code')
print(df)
print(df.index)  # 打印行索引

运行结果为:

      Name    [YR2017]    [YR2018]    [YR2019]
Code                                          
CHN     中国  1386395000  1392730000  1397715000
CAN    加拿大    36543321    37057765    37589262
IND     印度  1338658835  1352617328  1366417754
KOR   大韩民国    51361911    51606633    51709098
BRA     巴西   207833831   209469333   211049527
DEU     德国    82657002    82905782    83132799
Index(['CHN', 'CAN', 'IND', 'KOR', 'BRA', 'DEU'], dtype='object', name='Code')

以上代码中,设置了行索引为“Code”列。

指定列索引- 4.1.4 -

与指定行索引相似的,也可以通过参数header设置DataFrame的列索引。一般情况下header的默认值为0,即导入数据的第一行为列索引,而导入的数据一般也是第一行为标题行,作为列索引是合适的。可以指定数据的任意一行为列索引,作为示例,下面是一个没有必要的改变:

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\population.xlsx",header=1)
print(df)
print(df.columns)

运行结果为:

     中国  CHN  1386395000  1392730000  1397715000
0   加拿大  CAN    36543321    37057765    37589262
1    印度  IND  1338658835  1352617328  1366417754
2  大韩民国  KOR    51361911    51606633    51709098
3    巴西  BRA   207833831   209469333   211049527
4    德国  DEU    82657002    82905782    83132799
Index(['中国', 'CHN', 1386395000, 1392730000, 1397715000], dtype='object')

也可以使用从0开始的数作为列索引,只需将header设为None:

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\population.xlsx",header=None)
print(df)
print(df.columns)

运行结果为:

      0     1           2           3           4
0  Name  Code    [YR2017]    [YR2018]    [YR2019]
1    中国   CHN  1386395000  1392730000  1397715000
2   加拿大   CAN    36543321    37057765    37589262
3    印度   IND  1338658835  1352617328  1366417754
4  大韩民国   KOR    51361911    51606633    51709098
5    巴西   BRA   207833831   209469333   211049527
6    德国   DEU    82657002    82905782    83132799
Int64Index([0, 1, 2, 3, 4], dtype='int64')

指定导入列- 4.1.5 -

如果数据的列数太多,或者不需要导入所有列,可以通过参数usecols指定要导入的列。顺序从0开始计数,目前已不支持为usecols传递整数,应当传入一个int列表。

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\population.xlsx",usecols=[0,2])
print(df)

运行结果为:

   Name    [YR2017]
0    中国  1386395000
1   加拿大    36543321
2    印度  1338658835
3  大韩民国    51361911
4    巴西   207833831
5    德国    82657002