【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:\Users\Administrator\PycharmProjects\python_Basic\Pandas_to_Excel\20200721\output_files\output_file1.xlsx", sheet_name= "手机商品", index=False, #不保留index float_format="%.2f", #保留小数点2位 na_rep="空值") #如果有缺失值,可以通过na_rep的方式把缺失值替换成自定义的名字 print("Done!!")
二,将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:\Users\Administrator\PycharmProjects\untitled\Pandas_to_Excel\20200721\output_files\output_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输出内容结果
sheet2内容输出结果
三,读取总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:\Users\Administrator\PycharmProjects\python_Basic\Pandas_to_Excel\20200721\source_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:\Users\Administrator\PycharmProjects\python_Basic\Pandas_to_Excel\20200721\source_file\output_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读取数据。个人感觉这种方法比起循环遍历来的更加轻松!!
上述的三个案例,可以简单的演示了如何通过Pandas将数据保存到一个Excel表中。当然不同的场景可以通过不同的方法来进行对Excel的读写。Pandas之所以强大,是因为对比VBA而言Pandas可调用的库,类及函数方法实在太多了。而且对于数据的选取,增删改查等都非常的方便。在后续的篇章中还可以通过pandas第三方库对绘图等进行更加强大的展示。所以你还选择
不学pandas吗???? 好了,我们下篇再会!!!