pandas 读取现有excel文件的方法:
import pandas as pd
people = pd.read_excel('c:/Temp/People.xlsx')
几个常用的方法:
- .shape: 读取excel的总行数和总列数;
- .columns:读取excel中所有列的标题
- .head(n): 读取除标题外的前n行数据,默认为5行
- .tail(n): 读取末尾n行数据,默认为5行
import pandas as pd
people = pd.read_excel('c:/Temp/People.xlsx')
print(people.shape)
print('=====================')
print(people.columns)
print('=====================')
print(people.head(3))
print('=====================')
print(people.tail(3))
输出结果为
(19972, 6)
=====================
Index(['ID', 'Type', 'Title', 'FirstName', 'MiddleName', 'LastName'], dtype='object')
=====================
ID Type Title FirstName MiddleName LastName
0 1 Employee NaN Ken J Sánchez
1 2 Employee NaN Terri Lee Duffy
2 3 Employee NaN Roberto NaN Tamburello
=====================
ID Type Title FirstName MiddleName LastName
19969 20775 Individual Customer NaN Crystal S He
19970 20776 Individual Customer NaN Crystal NaN Zheng
19971 20777 Individual Customer NaN Crystal NaN Hu
集中常见的特殊情况:
1. 当目标文件的首行不是我们想要的header的时候。需要自定义header的行。
注:编程语言的编号是从0开始的,而excel的行号是从1开始的。
例如:目标文件的header行是exel的第二行,那么代码如下:
import pandas as pd
people = pd.read_excel('c:/Temp/People.xlsx',header=1)
print(people.columns)
2。 当目标文件没有header的时候,此时需要pandas我这个文件没有header
代码如下:
import pandas as pd
people = pd.read_excel('c:/Temp/People.xlsx',header=None)
print(people.columns)
这样pandas将默认用整数字来作为header。如上代码输出如下:
Int64Index([0, 1, 2, 3, 4, 5], dtype='int64')
此时要想再给目标文件添加header的话,代码如下:
import pandas as pd
people = pd.read_excel('c:/Temp/People.xlsx',header=None)
people.columns=['ID','Type','Title','FirstName','MiddleName','LastName']
print(people.columns)
打印结果
Index(['ID', 'Type', 'Title', 'FirstName', 'MiddleName', 'LastName'], dtype='object')
注:此时虽然我们在程序里面为目标文件添加了header,但实际上并没有写入目标文件people.xlsx 。
如果想要将增加了header的文件在实际文件里体现,有两种方法:
方法1: 输出到一个新的文件
代码如下:
import pandas as pd
people = pd.read_excel('c:/Temp/People.xlsx',header=None)
people.columns=['ID','Type','Title','FirstName','MiddleName','LastName']
print(people.columns)
people.to_excel('C:/Temp/output.xlsx')
print('done!')
注:此时输出的新目标文件包含了我们刚才在程序里面定义的header,同时系统也自动为新文件增加了默认的索引。
我们需要将“ID”指定为索引:
------------复习指定索引------------
import pandas as pd
people = pd.read_excel('c:/Temp/People.xlsx',header=None)
people.columns=['ID','Type','Title','FirstName','MiddleName','LastName']
people = people.set_index('ID')
print(people.columns)
people.to_excel('C:/Temp/output.xlsx')
print('done!')
此方法的一个特点是需要产生一个新的DataFrame,然后在通过people这个变量来重新引用它
--------------复习结束--------------
指定索引的另外一种方式:直接在当前DataFrame上进行修改。
代码如下:
people = pd.read_excel('c:/Temp/People.xlsx', header=None)
people.columns = ['ID', 'Type', 'Title', 'FirstName', 'MiddleName', 'LastName']
people.set_index('ID', inplace=True)
print(people.columns)
people.to_excel('C:/Temp/output.xlsx')
print('done!')
注意:此时的“ID”列已经被定义为了“index”,在我们打印columns的时候index的列名是不会被打印的。
***当我们在使用pandas.read_excel方法读取一个现有的excel文件的时候如果知道该文件的哪一列为index列,则需要指定出来,否则程序会在读取后自动为目标文件添加一个默认的index列。
代码示例:
import pandas as pd
df = pd.read_excel('C:/Temp/output.xlsx',index_col='ID')
df.to_excel('C:/Temp/output2.xlsx')
print('done!')