【python】pandas vs Excel (如何将数据写入到Excel中)

一,将DataFrame的数据存入Excel

注释:.to_excel(路径,参数) .同读excel类似的是写入excel调用的是to_excel的函数。

         1. 创建一个DataFrame,通过字典的方式创建,每一个key作为一个Series列名,而values则作为Series的值

         2. 通过to_excel函数写入到一个Excel表中

         3. 写入时同时指定参数   sheet_name 指定sheet的名称,index=Flase 隐藏index列,float_format="%.2f" 保留小数点2位,na_rep指定缺失值被替换的值

import pandas as pd

df = pd.DataFrame({"商品名称":["HuaWei Mate40 Pro","HuaWei 荣耀V30","小米 9 ","vovo mate 300"],
                   "商品价格":[8700.456,35799.0678,2600,None]})
print(df)

df.to_excel(R"C:UsersAdministratorPycharmProjectspython_BasicPandas_to_Excel20200721output_filesoutput_file1.xlsx",
            sheet_name= "手机商品",
            index=False,  #不保留index
            float_format="%.2f", #保留小数点2位
            na_rep="空值")   #如果有缺失值,可以通过na_rep的方式把缺失值替换成自定义的名字


print("Done!!")

  【python】pandas vs Excel (如何将数据写入到Excel中)

二,将DataFrame的数据存入Excel的各个sheet中

注释:1. 创建两个DataFrame,通过字典的方式创建,每一个key作为一个Series列名,而values则作为Series的值 

          2. 通过with .ExcelWriter函数 as 别名 的方式将两个DataFrame传入不同的sheet中

          3. 传入数据之前,对于日期相关的数据通过datetime_format= "YYYY-MM-DD"等格式来输出到Excel表中

import pandas as pd
from datetime import datetime
"""
ExcelWriter的2个主要作用:
1. 可以读取多个sheet的内容
2. 设置datetime的输出格式
"""

df01 = pd.DataFrame({
    "商品名称":["HuaWei Mate40 Pro","HuaWei 荣耀V30","小米 9 ","vovo mate 300"],
    "商品价格":[8700.456,35799.0678,2600,3789.567],
    "出售日期":[datetime(2020,1,1),datetime(2020,1,2),datetime(2020,1,3),datetime(2020,1,4)]
})

df02 = pd.DataFrame({
    "商品名称":["HuaWei Mate40 Pro","HuaWei 荣耀V30","小米 9 ","vovo mate 300"],
    "商品价格":[8700.456,35799.0678,2600,3789.567],
    "出售日期":[datetime(2020,2,1),datetime(2020,2,2),datetime(2020,2,3),datetime(2020,2,4)]
})

print(df01)
print(df02)

#将上述2个DateFrame存入Excel表中

#通过with ExcelWriter类来格式化含有日期的列,并把不同的DateFrame对象输出到不同的sheet中
with pd.ExcelWriter(R"C:UsersAdministratorPycharmProjectsuntitledPandas_to_Excel20200721output_filesoutput_file3.xlsx",
                    datetime_format="YYYY/MM/DD") as writer:
    df01.to_excel(writer,sheet_name="1月份销量",index=False)
    df02.to_excel(writer,sheet_name="2月份销量",index=False)
    print("Done!!!") 

sheet1输出内容结果

【python】pandas vs Excel (如何将数据写入到Excel中)

sheet2内容输出结果

【python】pandas vs Excel (如何将数据写入到Excel中)

三,读取总Excel表,并按照需求把数据分别保存到另一个Excel不同的sheet中(这种场景会是我们日常用的最多的

数据:请自行把数据保存成.xlsx格式的文件

班级	姓名	语文	数学	英语	总分	性别	考号
5	王英杰	81	89	72	242	女	2018001
3	陈鑫雨	87	88	85	260	女	2018002
3	朱莹莹	79	81	66	226	女	2018006
1	魏薇	73	59	54	186	女	2018010
5	朱洁	77	88	92	257	女	2018011
1	朱瑞麒	59	60	34	153	女	2018012
4	王靖雅	64	57	56	177	女	2018014
3	李芮瑶	69	28	42	139	女	2018018
2	密文芯	65	62	48	175	女	2018019
2	韦婷	72	73	40	185	女	2018020
5	李美辉	58	16	35	109	女	2018024
3	陈佳慧	57	47	37	141	女	2018026
1	黄慧婕	73	81	84	238	女	2018027
4	顾子晨	34	35	13	82	男	2018031
3	王任	62	68	44	174	男	2018037
4	胡博宇	69	80	63	212	男	2018047
2	赵奥杰	79	58	52	189	男	2018055
5	孙鹏	65	58	56	179	男	2018057
2	李欣欣	77.5	88	72	237.5	女	2018067
4	商雪宁	76	93	78	247	女	2018069
5	李美瑶	78.5	69	82	229.5	女	2018070
3	李泉霖	90.5	97	97	284.5	女	2018072
3	韩涵	79.5	64	67	210.5	女	2018074
3	王晶	76	89	69	234	女	2018076
4	李梓瞳	85.5	86	82	253.5	女	2018077
2	马凤娇	82	89	89	260	女	2018083
1	张章	60	55	48	163	男	2018094
5	周子谦	77	74	75	226	男	2018106
1	沈政宇	51	71	27	149	男	2018108
2	张志航	71	86	67	224	男	2018110
5	公子豪	61	90	60	211	男	2018112
1	宋承泽	68	74	53	195	男	2018113
2	王颢轩	37	50	33	120	男	2018116
3	庞永琪	69	48	77	194	男	2018117
2	吴磊	56	33	42	131	男	2018118
4	李兆鸿	76	75	49	200	男	2018120
2	张艺琳	57	77	67	201	女	2018123
3	张艺馨	63	63	77	203	女	2018126
2	李铭羽	34	25	23	82	女	2018130
2	卢晓慧	64	74	70	208	女	2018133
4	周诗棋	78	94	67	239	女	2018138
3	尤馨悦	74	71	30	175	女	2018143
3	李珂迪	69	61	61	191	女	2018146
1	马彦冰	77	72	52	201	女	2018148
5	赵宇鹏	72	88	80	240	男	2018155
2	吴文琦	75	97	82	254	男	2018161
2	马宪荣	66	74	57	197	男	2018165
1	*	61	83	72	216	男	2018166
1	王锦程	80	96	83	259	男	2018167
3	王茂丞	36	68	23	127	男	2018168
4	张利恒	58	74	64	196	男	2018172
5	宋皓翰	57	44	18	119	男	2018175
3	蒋洁妤	50	18	24	92	女	2018182
2	李敏琪	85	33	29	147	女	2018186
2	卞舒宁	82	69	88	239	女	2018189
4	刘若惜	55	44	45	144	女	2018192
1	闫瑾	74	64	64	202	女	2018196
1	王晓渝	45	12	28	85	女	2018198
4	苏永远	73	50	52	175	女	2018200
4	李坤璐	87	77	71	235	女	2018203
2	李嘉晨	54	63	46	163	男	2018211
3	张清祥	75	92	84	251	男	2018215
3	郭高旭	76	63	61	200	男	2018216
4	孙喆	34	59	9	102	男	2018224
4	高义杰	66	73	74	213	男	2018228
3	孙紫轩	78	90	72	240	男	2018234
5	赵天成	64	84	64	212	男	2018237
5	徐金珠	71	48	34	153	女	2018245
1	王浩然	79	86	69	234	女	2018246
4	孙浩然	52	42	26	120	女	2018254
1	徐菁	54	90	60	204	女	2018256
5	马玥	26	8	4	38	女	2018258
2	聂晨	61	56	59	176	女	2018265
1	唐诗涵	83	87	83	253	女	2018266
1	诸葛祥云	57	51	54	162	男	2018273
4	刘晨桐	74	87	65	226	男	2018275
1	薛智元	62.5	22	46	130.5	男	2018278
1	廉政宇	73	74	55	202	男	2018279
2	吕可乐	78	70	81	229	男	2018280
1	马翔	77.5	78	72	227.5	男	2018281
3	王云升	40	85	51	176	男	2018282
2	张俊博	56	71	39	166	男	2018283
4	徐人杰	67.5	83	84	234.5	男	2018285
5	宿晓硕	70	90	61	221	男	2018299
5	卢俊蓉	82.5	97	82	261.5	女	2018304
2	高诗茹	52.5	47	64	163.5	女	2018313
5	朱雪婷	54	69	33	156	女	2018314
3	王慧	55.5	48	36	139.5	女	2018315
2	杨慧	68.5	95	68	231.5	女	2018317
1	王安琪	67	56	67	190	女	2018320
2	张雨欣	62	64	42	168	女	2018325
4	曹一丹	76.5	78	67	221.5	女	2018326
5	祝欣月	73.5	57	51	181.5	女	2018328
2	张家溢	60	59	55	174	男	2018335
5	牛瑞旺	10	24	11	45	男	2018336
2	张智杰	79	91	80	250	男	2018337
4	丁文博	85	93	88	266	男	2018338
3	杨杰	63	92	83	238	男	2018339
1	邵钰铭	73	91	56	220	男	2018341
1	朱昊宇	65	54	27	146	男	2018343
2	田枫玉	53	20	17	90	男	2018347
4	刘志浩	61	63	78	202	男	2018348
2	张家赫	62	83	69	214	男	2018349
3	鲍明祺	57	63	66	186	男	2018350
3	朱梓豪	54	87	70	211	男	2018351
3	付艺阁	64	66	20	150	男	2018354
5	于文杰	56	89	32	177	男	2018357
3	刘译泽	70	84	67	221	女	2018366
3	高政	59	57	41	157	女	2018370
4	崔凯	63	22	31	116	女	2018374
4	孙瑜	46	60	42	148	女	2018376
4	葛世宇	62	83	39	184	女	2018377
1	郭逸翔	68	78	62	208	女	2018379
5	丁一航	39	11	18	68	女	2018381
4	陈宗想	71	42	34	147	男	2018395
4	倪羽轩	82	54	37	173	男	2018396
2	孙鹏	58	58	37	153	男	2018397
3	王裕超	75	64	78	217	男	2018401
1	马振郡	74	58	49	181	男	2018402
3	王睿	78	80	69	227	男	2018403
1	彭俊亿	67	83	48	198	男	2018408
5	罗博文	53	64	54	171	男	2018415
2	刘明松	51	86	43	180	男	2018416
4	宁洋	61	51	51	163	男	2018419
5	贺子凡	72	63	59	194	男	2018420
4	朱一诺	73	70	54	197	女	2018428
5	张艺馨	68	47	49	164	女	2018430
4	杨环宇	82.5	83	80	245.5	女	2018433
2	谢欣桐	76	71	65	212	女	2018436
2	王雅文	60	77	57	194	女	2018438
2	赵研	96	95	80	271	女	2018440
1	曹露馨	78	95	82	255	女	2018443
3	王一博	65.5	56	76	197.5	女	2018447
5	高一文	64	31	61	156	女	2018448
5	于群	77	71	66	214	女	2018450
4	殷鑫	28	45	46	119	男	2018455
1	郑顺文	70	75	73	218	男	2018456
5	李翔旭	40	35	55	130	男	2018460
1	许文泽	85	90	69	244	男	2018465
3	张恒	50	64	49	163	男	2018467
2	上官豫凯	77	88	56	221	男	2018469
5	赵建超	83	98	87	268	男	2018474
4	田翔	55	20	47	122	男	2018478
5	陈俊澎	63	36	43	142	男	2018479
4	李甲硕	62	48	65	175	男	2018497
4	房庆辉	71	85	90	246	男	2018498
4	张孝臣	56	17	32	105	男	2018501
2	穆存晟	54	40	21	115	男	2018511
1	*宇	49	54	47	150	男	2018516
4	王天任	74	78	76	228	男	2018520
1	韩宗祥	54	49	40	143	男	2018530
3	邵珠轩	75	90	77	242	男	2018539
4	付森	60	75	56	191	男	2018540
2	魏晓颖	80	60	61	201	女	2018543
3	周姝含	60	65	64	189	女	2018544
2	郭美辰	82	74	64	220	女	2018545
5	孙卿慧	80	55	55	190	女	2018547
2	魏佳怡	74	53	57	184	女	2018548
5	邱轶姝	85	83	71	239	女	2018553
3	张静茹	82	78	58	218	女	2018557
1	郁慧	68	50	36	154	女	2018562
5	朱俣洁	70	82	27	179	女	2018567
3	阚耀	71	93	51	215	男	2018571
4	何浩楠	55	35	12	102	男	2018573
4	季佳豪	74	55	56	185	男	2018575
3	纪天圆	60	45	36	141	男	2018578
1	麻洪轩	80	87	73	240	男	2018580
3	王中源	39	20	11	70	男	2018582
2	苏子渊	74	89	85	248	男	2018588
3	郑信瑜	69	65	47	181	男	2018589
2	姚杰	80	72	41	193	男	2018592
2	彭嘉豪	29	29	33	91	男	2018593
3	晁子斌	64	45	21	130	男	2018596
1	李镇宇	71	79	87	237	男	2018597
1	赵泓博	81	54	29	164	男	2018599
4	王琳	83.5	80	74	237.5	女	2018603
1	孙艺菲	64	59	39	162	女	2018610
4	薄淑婷	63	77	80	220	女	2018611
3	苏一苹	71	94	70	235	女	2018614
5	岳子琪	62	80	78	220	女	2018617
2	周怡彤	73	73	57	203	女	2018623
4	常琬媛	62	48	34	144	女	2018626
5	徐浩哲	77	80	83	240	男	2018633
4	杨霖	74	97	90	261	男	2018638
5	王梓谦	74	92	79	245	男	2018643
3	韩林熹	65	38	38	141	男	2018645
5	赵一全	57	60	56	173	男	2018647
3	李旭	34	17	10	61	男	2018653
1	刘家豪	85	91	95	271	男	2018655
2	姜冠羽	72	88	79	239	男	2018656
3	陈休宇	86	68	79	233	男	2018658
1	王一涵	82	62	79	223	女	2018663
1	林紫凡	49	61	44	154	女	2018665
1	吴琳琳	67	40	37	144	女	2018666
3	姬莉	60	67	36	163	女	2018671
5	赵梓彤	76	79	42	197	女	2018674
5	张萌丹	83	73	82	238	女	2018675
2	李高玉	43	41	32	116	女	2018677
4	赵文馨	44	82	47	173	女	2018678
4	张路	81	94	43	218	女	2018679
1	李佳琳	74	84	75	233	女	2018680
3	夏子晟	71	38	41	150	女	2018683
5	孙子涵	64	85	60	209	女	2018686
5	王艺心	80	65	59	204	女	2018688
4	姜含青	81	70	57	208	女	2018690
5	孙嘉祥	70	85	20	175	男	2018691
2	李明泽	69	72	77	218	男	2018697
5	刘浩然	47	45	59	151	男	2018703
1	王真	32.5	20	27	79.5	男	2018705
1	高侨	53.5	73	53	179.5	男	2018706
5	王颢运	69.5	73	58	200.5	男	2018707
5	郁章群	73.5	65	68	206.5	男	2018711
2	王宁	65	36	36	137	男	2018712
5	郑金原	78.5	68	45	191.5	男	2018714
5	朱鹏宇	73	86	73	232	男	2018715
1	田峻赫	59	74	53	186	男	2018716
1	张忠庆	20	4	15	39	男	2018724
1	周星彤	52	48	34	134	女	2018727
2	曹书魁	47	21	22	90	男	2018730
5	杨帅	58	64	64	186	男	2018736
2	王卓	81	73	81	235	男	2018739
3	石子盈	86	74	87	247	女	2018741
1	王菲	80	74	76	230	女	2018742
3	王聪	59	75	69	203	男	2018743
4	郑凯登	64	69	70	203	男	2018745
4	张瑜涵	75	72	42	189	男	2018746

需求:按照班级划分,将数据存储到不同的sheet中

注意:以下的格式是通过jupyter的框架写的。如果您是用的.py的文件请把输出前加上print()。例如: print(df.head(10))

import pandas as pd

df = pd.read_excel(R"C:UsersAdministratorPycharmProjectspython_BasicPandas_to_Excel20200721source_file按照班级分离文件.xlsx",
                   sheet_name= "Sheet1"
                   )
df.head(10)

#%%
# 通过掩码的方式指定条件,条件匹配则将数据存入变量
class1 = df[df["班级"] == 1]
class2 = df[df["班级"] == 2]
class3 = df[df["班级"] == 3]
class4 = df[df["班级"] == 4]
class5 = df[df["班级"] == 5]

#%%
with pd.ExcelWriter(R"C:UsersAdministratorPycharmProjectspython_BasicPandas_to_Excel20200721source_fileoutput_result.xlsx") as writer:
    class1.to_excel(writer,sheet_name="班级1",index=False)
    class2.to_excel(writer,sheet_name="班级2",index=False)
    class3.to_excel(writer,sheet_name="班级3",index=False)
    class4.to_excel(writer,sheet_name="班级4",index=False)
    class5.to_excel(writer,sheet_name="班级5",index=False)
    print("Done!!!")

输出结果:看sheets就可以看出已经成功创建了5个班级,我这里就不一一截图了.您可以自己跑一下上述脚本,结果会把数据按照班级分别写入到这5个sheet中。

重点:这里巧妙了运用了pandas掩码的用法.  例如:df["班级"] == 1,如果直接打印这个返回的是一串与行对应的布尔值.为True则选中数据,Flase则忽略数据不选。这个是可以指定的

          在这里就不详细说明了。后面的篇章中会仔细说明。总之通过这个方法,可以避免运用循环带来的消耗 IO读取数据。个人感觉这种方法比起循环遍历来的更加轻松!!

【python】pandas vs Excel (如何将数据写入到Excel中)

上述的三个案例,可以简单的演示了如何通过Pandas将数据保存到一个Excel表中。当然不同的场景可以通过不同的方法来进行对Excel的读写。Pandas之所以强大,是因为对比VBA而言Pandas可调用的库,类及函数方法实在太多了。而且对于数据的选取,增删改查等都非常的方便。在后续的篇章中还可以通过pandas第三方库对绘图等进行更加强大的展示。所以你还选择

不学pandas吗???? 好了,我们下篇再会!!!