网站海外推广技巧,微信crm管理系统免费,建筑工程168网,上海网站制作软件Python处理ExcelCSV文件
前言
在今年很早的时候#xff0c;写过一篇用 Python 玩 Excel 的文章#xff0c;可以回顾《Python操作 excel #xff1f;应该这么玩#xff01;》
当时介绍了用 Pandas 库玩股票#xff0c;在 Excel 中画出一个图来。
现在有了前几天爬取的…Python处理ExcelCSV文件
前言
在今年很早的时候写过一篇用 Python 玩 Excel 的文章可以回顾《Python操作 excel 应该这么玩》
当时介绍了用 Pandas 库玩股票在 Excel 中画出一个图来。
现在有了前几天爬取的王者荣耀 csv 文件还需要用 pandas 库来操作处理下。
实战中去体会这些第三方库的使用技巧印象才会比较深刻。
环境准备
开始之前首先确保你安装了 pandas 库。
pip install pandas
简单用官网介绍的文字来说明下何为 pandasPandas是一个开源的BSD许可的库为Python编程语言提 供高性能易于使用的数据结构和数据分析工具。
https://www.pypandas.cn/intro/
pandas中文官网
处理数据
有些时候使用一些工具类的库如何才能更好地练手
一旦有了使用场景那么便是最好的练手机会。再次强调
现在我的需求很明确了
有一个王者荣耀的 csv 数据我需要将其读取到然后将字典类型变成列同时需要让头像下载后自动写进 Excel 中。
而 Excel 的数据最终会提供给玩王者的朋友们 也为了后续的分析而用。
1.pd.read_csv()
import pandas as pd
df pd.read_csv(path) # 读取 csv 文件看返回的是什么
打个断点看下df最终返回的结果查看 debug 面板df 的类型是 DataFrame。来看下官网是如何介绍的如果还不理解你可以把 DataFrame 想成 Excel 中的 Sheet 页它有着行和列所以称之为二维异构表格。
2.df[列名] 获取单列
在原来的 csv 中有两列是字典类型的现在需要将每列的每行数据取出来并且生成新的列而列名就是字典中的 key 单列的每行数据则是字典中的 value。
attr_details_data_dict df[attr_details_data_dict] # 获取单列取出来则是单列而类型是 Series 一维同构数组。看上面官方的图介绍
3.pd.DataFrame(dict) 创建新的DataFrame
detail_col_list []
for detail_str in attr_details_data_dict:
detail_df pd.DataFrame(json.loads(detail_str), index[0])
detail_col_list.append(detail_df)
不难发现现在的单列数据中每行看似都是 dict 类型的但用 for 循环遍历时取出的数据则是 str 类型所以要用 json 库转换成 dict。
在用 pd.DataFrame 来构造新的 DataFrame需要注意构造时dict 中的 value 值必须是可迭代的类型比如 list 等不然会报错由于现在 dict 中的 value 是单个字符串所以需要加上 Index[0] 的参数方可解决问题。这样最终构造出来的每个单独的 DataFrame我们将其追加到一个列表中便于后续合并使用。
4.pd.concat([df1,df2....]) 合并DataFrame
new_detail_df pd.concat(detail_col_list, axis0, ignore_indexTrue)
参数 axis0 表示上下合并1表示左右合并ignore_indexTrue表示忽略原来的索引。最终你可以看到由 list 中多个 df 上下合并而成大的 df和 csv 中的顺序一致数据一致。
PS : 关于这里的 for 循环如果你会列表表达式可以写成一行处理很简洁
detail_col_list [pd.DataFrame(json.loads(detail_str), index[0]) for detail_str in attr_details_data_dict]
上面四步骤是在处理原来英雄的初始化数值的参数。
原 csv 中还有一列也是 dict 类型类似处理即可。
当然如果你对 Excel 处理以上的后三部也是适用的。
pandas写入Excel
写入 Excel 之前我们有一项工作没有做就是将我们新增的列合并到原有的 df 上去把原来 df 中的两个 dict 列去除掉。
1.去除 df 中的某列。df.drop([列名],axis1)
df2 df.drop([attr_details_data_dict, recommand_stars_dict], axis1) # 删除已经处理过的列
print(df2.columns) # 打印列名2.将新增列合并删除后的列上。
依然采用 concat 函数去做合并这次是左右合并所以 axis1 列合并左右 axis0行合并上下。
# 合并新旧列
final_df pd.concat([df2, new_detail_df, new_recommend_df], axis1)
结果3.写入 Excel
写入操作很简单只需要如下
final_df.to_excel(xxx.xlsx)
总结
pandas的操作已经有了中文的官方文档非常友好大家可以对照中文文档去看下。
关于 Excel 中的头像下载以及 Excel 的数据清理放在下一篇文章中讲解。本篇内容长度足矣了不继续写了。
老规矩本章代码已经上传到 github 上公号后台回复 王者数据 即可获得源码和excel文件