read_excel()
加载函数为read_excel()
,其具体参数如下。
read_excel(io,
sheetname=0,
header=0,
skiprows=None,
skip_footer=0,
index_col=None,
names=None,
parse_cols=None,
parse_dates=False,
date_parser=None,
na_values=None,
thousands=None,
convert_float=True,
has_index_names=None,
converters=None,
dtype=None,
true_values=None,
false_values=None,
engine=None,
squeeze=False,
**kwds
)
常用参数解析:
io
: string, path object ; excel 路径。sheetname
: string, int, mixed list of strings/ints, or None, default 0 返回多表使用sheetname=[0,1],若sheetname=None是返回全表 注意:int/string 返回的是dataframe,而none和list返回的是dict of dataframeheader
: int, list of ints, default 0 指定列名行,默认0,即取第一行,数据为列名行以下的数据 若数据不含列名,则设定 header = Noneskiprows
: list-like,Rows to skip at the beginning,省略指定行数的数据skip_footer
: int,default 0, 省略从尾部数的int行数据index_col
: int, list of ints, default None指定列为索引列,也可以使用u”strings”,读取的时候指定 索引names
: array-like, default None, 指定列的名字。na_values
:指定原数据集中哪些特征的值作为缺失值。na_filter : boolean
, default True;是否检查丢失值(空字符串或者是空值)。对于大文件来说数据集中没有空值,设定na_filter=False可以提升读取速度。thousands
:指定原始数据中的千位符comment
:指定注释符,在读取数据时,如果碰到首行指定的注释符,则跳过该行。parse_datas
:指明日期列,为字符串构成的 list;
数据源:
sheet1:
ID NUM-1 NUM-2 NUM-3
36901 142 168 661
36902 78 521 602
36903 144 600 521
36904 95 457 468
36905 69 596 695
sheet2:
ID NUM-1 NUM-2 NUM-3
36906 190 527 691
36907 101 403 470
(1)函数原型
basestation ="F://pythonBook_PyPDAM/data/test.xls"
data = pd.read_excel(basestation)
print data
输出:是一个dataframe
ID NUM-1 NUM-2 NUM-3
0 36901 142 168 661
1 36902 78 521 602
2 36903 144 600 521
3 36904 95 457 468
4 36905 69 596 695
(2)sheet_name参数
:返回多表使用sheetname=[0,1],若sheetname=None是返回全表 注意:int/string 返回的是dataframe,而none和list返回的是dict of dataframe
data_1 = pd.read_excel(basestation,sheet_name=[0,1])
print(data_1)
print(type(data_1))
'''
OrderedDict([(0, ID NUN-1 NUM-2 NUM-3
0 36901 45 78 95
1 36902 47 45 63
2 39603 85 47 21
3 39604 96 36 45
4 39605 25 89 15),
(1, ID NUN-1 NUM-2 NUM-3
0 36906 58 52 47
1 36907 66 26 14)])
<class 'collections.OrderedDict'>
(3)header
参数:指定列名行,默认0,即取第一行,数据为列名行以下的数据 若数据不含列名,则设定 header = None ,注意这里还有列名的一行。
data = pd.read_excel(basestation,header=None)
print(data)
'''
0 1 2 3
0 ID NUN-1 NUM-2 NUM-3
1 36901 45 78 95
2 36902 47 45 63
3 39603 85 47 21
4 39604 96 36 45
5 39605 25 89 15
'''
data = pd.read_excel(basestation,header=[3])
print(data)
'''
39603 85 47 21
0 39604 96 36 45
1 39605 25 89 15
'''
(4) skiprows
参数:省略指定行数的数据
data = pd.read_excel(basestation,skiprows = [1])
print(data)
'''
ID NUN-1 NUM-2 NUM-3
0 36902 47 45 63
1 39603 85 47 21
2 39604 96 36 45
3 39605 25 89 15
'''
(5)skip_footer
参数:省略从尾部数的int行的数据
data = pd.read_excel(basestation, skip_footer=3)
print(data)
'''
ID NUN-1 NUM-2 NUM-3
0 36901 45 78 95
1 36902 47 45 63
'''
(6)index_col
参数:指定列为索引列,也可以使用u”strings”
data = pd.read_excel(basestation, index_col="NUM-3")
print(data)
'''
ID NUN-1 NUM-2
NUM-3
95 36901 45 78
63 36902 47 45
21 39603 85 47
45 39604 96 36
15 39605 25 89
'''
(7)names
参数: 指定列的名字。
data = pd.read_excel(basestation,names=["a","b","c","e"])
print(data)
'''
a b c e
0 36901 45 78 95
1 36902 47 45 63
2 39603 85 47 21
3 39604 96 36 45
4 39605 25 89 15
'''
8)nrows
读取指定的几行数据
data = pd.read_excel(basestation, nrows=3)
print(data)
'''
ID NUN-1 NUM-2 NUM-3
0 36901 45 78 95
1 36902 47 45 63
2 39603 85 47 21
'''
9)usecols
:读取指定的列, 也可以通过名字或索引值(指定需要读取原数据集中的哪些变量名,以列表传入。)
data = pd.read_excel(basestation, usecols=2)
print(data)
'''
ID NUN-1 NUM-2
0 36901 45 78
1 36902 47 45
2 39603 85 47
3 39604 96 36
4 39605 25 89
'''
to_excel()
存储函数为pd.DataFrame.to_excel()
,注意,必须是DataFrame写入excel, 即Write DataFrame to an excel sheet。其具体参数如下:
to_excel(self, excel_writer, sheet_name='Sheet1', na_rep='', float_format=None,columns=None, header=True, index=True, index_label=None,startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None,
inf_rep='inf', verbose=True, freeze_panes=None)
数据源:
ID NUM-1 NUM-2 NUM-3
0 36901 142 168 661
1 36902 78 521 602
2 36903 144 600 521
3 36904 95 457 468
4 36905 69 596 695
5 36906 165 453
加载数据:
basestation ="./ex.xls"
basestation_end ="./test_end.xls"
data = pd.read_excel(basestation)
(1)参数excel_writer
,输出路径。
data.to_excel(basestation_end)
(2)sheet_name,将数据存储在excel的那个sheet页面。
data.to_excel(basestation_end,sheet_name="sheet2")
(3)na_rep,缺失值填充
data.to_excel(basestation_end,na_rep="NULL")
(4) colums参数: sequence, optional,Columns to write 选择输出的的列。
data.to_excel(basestation_end,columns=["ID"])
(5)header 参数: boolean or list of string,默认为True,可以用list命名列的名字。header = False 则不输出题头。
data.to_excel(basestation_end,header=["a","b","c","d"])
header = False
则不输出题头
data.to_excel(basestation_end,header=False,columns=["ID"])
(6)index : boolean, default True Write row names (index)
默认为True,显示index,当index=False 则不显示行索引(名字)。
index_label : string or sequence, default None
设置索引列的列名。
data.to_excel(basestation_end,index=False)
index_label
设置索引列的列名
data.to_excel(basestation_end,index_label=["f"])
-
写入excel,自定义索引
data={'ID':[1,2,3,4], 'year':[2000,2001,2002,2003], 'pop':[3.7,3.6,2.4,0.9]} df=pd.DataFrame(data) print(df) ''' ID year pop 0 1 2000 3.7 1 2 2001 3.6 2 3 2002 2.4 3 4 2003 0.9 ''' df.to_excel('text.xls')
data={'ID':[1,2,3,4], 'year':[2000,2001,2002,2003], 'pop':[3.7,3.6,2.4,0.9]} df=pd.DataFrame(data) df=df.set_index('ID') df.to_excel('text.xls')
-
查看行数,列数,列名,查看部分数据
people=pd.read_excel('People.xlsx') #查看形状 print(people.shape) print('***********') #查看列名 print(people.columns) print('***********') # 查看部分数 print(people.head(3)) #head()默认前5行 print('***********') print(people.tail()) #默认后5行 ''' (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 19967 20773 Individual Customer NaN Crystal NaN Guo 19968 20774 Individual Customer NaN Isabella F Richardson 19969 20775 Individual Customer NaN Crystal S He 19970 20776 Individual Customer NaN Crystal NaN Zheng 19971 20777 Individual Customer NaN Crystal NaN Hu '''
-
读取的数据无表头,为其添加新的表头并保存
people=pd.read_excel('People.xlsx',header=None) people.columns=['id', 'type', 'title', 'First', 'Middle', 'Last'] print(people.columns) #Index(['id', 'type', 'title', 'First', 'Middle', 'Last'], dtype='object') #默认添加行索引 ,可以重新指定 people=people.set_index('id') people.to_excel('people2.xls')
-
指定列为索引,避免自动pands再生成新的索引
#指定某列为索引 ,pands就不会再自动生成索引 people=pd.read_excel('people2.xls',index_col='id')
Pandas将多个Sheet写入到本地同一Excel文件中
import pandas as pd
#读取两个表格
data1=pd.read_excel('文件路径')
data2=pd.read_excel('文件路径')
#将两个表格输出到一个excel文件里面
writer=pd.ExcelWriter('D:新表.xlsx')
data1.to_excel(writer,sheet_name='sheet1')
data2.to_excel(writer,sheet_name='sheet2')
#必须运行writer.save(),不然不能输出到本地
writer.save()
with pd.ExcelWriter(r'C:\Users\数据\Desktop\data\test2.xls') as writer:
df1.to_excel(writer, sheet_name='df1')
df2.to_excel(writer, sheet_name='df2')