python读取csv文件_Python处理Excel&CSV文件

c384cd048024cefbb82ef296a64253a0.png

Python处理Excel&CSV文件

前言

在今年很早的时候,写过一篇用 Python 玩 Excel 的文章,可以回顾《Python操作 excel ?应该这么玩!》

当时介绍了用 Pandas 库玩股票,在 Excel 中画出一个图来。

现在有了前几天爬取的王者荣耀 csv 文件,还需要用 pandas 库来操作处理下。

实战中去体会这些第三方库的使用技巧,印象才会比较深刻。

环境准备

开始之前,首先确保你安装了 pandas 库。

pip 

简单用官网介绍的文字来说明下,何为 pandas?

Pandas是一个开源的,BSD许可的库,为Python编程语言提> > 供高性能,易于使用的数据结构和数据分析工具。 https://www. pypandas.cn/intro/
pandas中文官网

处理数据

有些时候,使用一些工具类的库,如何才能更好地练手?

一旦有了使用场景,那么,便是最好的练手机会。(再次强调)

现在我的需求很明确了:

有一个王者荣耀的 csv 数据,我需要将其读取到,然后将字典类型变成列,同时,需要让头像下载后自动写进 Excel 中。

而 Excel 的数据最终会提供给玩王者的朋友们, 也为了后续的分析而用。

1.pd.read_csv()

import 

打个断点看下,df最终返回的结果:

6ad57fab9b59440c6ceb26dfcbecb9be.png

查看 debug 面板,df 的类型是 DataFrame。

18d3b3a66646befc8401606fcf09329e.png

来看下官网是如何介绍的?

84d71ea1e6b3fe2285e4ed71f5a6358b.png

如果还不理解,你可以把 DataFrame 想成 Excel 中的 Sheet 页,它有着行和列,所以称之为二维异构表格。

2.df['列名'] 获取单列

在原来的 csv 中,有两列是字典类型的,现在需要将每列的每行数据取出来,并且生成新的列,而列名就是字典中的 key ,单列的每行数据则是字典中的 value。

attr_details_data_dict 

f606958f33a8a75d491155481c1c94ab.png

取出来则是单列,而类型是 Series ,一维同构数组。(看上面官方的图介绍)

3.pd.DataFrame(dict) 创建新的DataFrame

detail_col_list 

不难发现,现在的单列数据中每行看似都是 dict 类型的,但用 for 循环遍历时,取出的数据则是 str 类型,所以要用 json 库转换成 dict。

在用 pd.DataFrame 来构造新的 DataFrame,需要注意,构造时,dict 中的 value 值必须是可迭代的类型,比如 list 等,不然会报错:

9f3cfae860ea507cc0d5d792bb804bbf.png

由于现在 dict 中的 value 是单个字符串,所以需要加上 Index=[0] 的参数,方可解决问题。

a1af351cc1bf43ab7f77b55825f8bbbc.png

这样最终构造出来的每个单独的 DataFrame,我们将其追加到一个列表中,便于后续合并使用。

4.pd.concat([df1,df2....]) 合并DataFrame

new_detail_df 

参数 axis=0 表示上下合并,1表示左右合并,ignore_index=True表示忽略原来的索引。

98ab03ea81512dc126ec2ea1e17c8f8f.png

最终,你可以看到由 list 中多个 df 上下合并而成大的 df,和 csv 中的顺序一致,数据一致。

PS : 关于这里的 for 循环,如果你会列表表达式,可以写成一行处理,很简洁:

detail_col_list 

上面四步骤是在处理原来英雄的初始化数值的参数。

原 csv 中还有一列,也是 dict 类型,类似处理即可。

当然如果你对 Excel 处理,以上的后三部也是适用的。

pandas写入Excel

写入 Excel 之前,我们有一项工作没有做,就是将我们新增的列合并到原有的 df 上去,把原来 df 中的两个 dict 列去除掉。

1.去除 df 中的某列。df.drop(['列名'],axis=1)

df2 

a3498615eaa13da75164b6080b8f0216.png

2.将新增列合并删除后的列上。

依然采用 concat 函数去做合并,这次是左右合并,所以 axis=1 ,列合并(左右), axis=0,行合并(上下)。

# 合并新旧列

结果:

5109dcfe9f4f4cf983b565cff8e0f65f.png

3.写入 Excel

写入操作很简单,只需要如下:

final_df

总结

pandas的操作,已经有了中文的官方文档,非常友好,大家可以对照中文文档去看下。

关于 Excel 中的头像下载,以及 Excel 的数据清理,放在下一篇文章中讲解。本篇内容长度足矣了,不继续写了。

老规矩,本章代码已经上传到 github 上,公号后台回复 王者数据 ,即可获得源码和excel文件!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值