Python处理Excel&CSV文件

前言

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

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

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

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

环境准备

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

pip install pandas

简单用官网介绍的文字来说明下,何为 pandas?Pandas是一个开源的,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, axis=0, ignore_index=True)

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

最终,你可以看到由 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(['列名'],axis=1)

df2 = df.drop(['attr_details_data_dict', 'recommand_stars_dict'], axis=1) # 删除已经处理过的列

print(df2.columns) # 打印列名

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

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

# 合并新旧列

final_df = pd.concat([df2, new_detail_df, new_recommend_df], axis=1)

结果:

3.写入 Excel

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

final_df.to_excel('xxx.xlsx')

总结

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

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

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

pythoncsv文件处理_Python处理ExcelCSV文件相关推荐

  1. c语言实现将两个文件复制到一个文件里_Python中复制文件的9种方法

    作者:小小程序员 链接:https://zhuanlan.zhihu.com/p/91277888 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. Python 中有 ...

  2. python生成多级文件夹_Python zipfile压缩文件和文件夹(支持多级目录)

    支持压缩单个文件和多级文件夹 使用方法 zip_compress(to_zip,save_zip_name):#to_zip表示源文件或者源目录,save_zip_name表示目的zip文件(可带目录 ...

  3. python文件分发_python 写一个文件分发小程序

    一.概述 该小程序实现从源端到目标端的文件一键拷贝,源端和目标段都在一台电脑上面,只是目录不同而已 二.参数文件说明 1. settings.txt的说明 a. 通过配置settings.txt,填源 ...

  4. python怎么编辑文件夹_python创建修改文件

    python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径:os.getcwd() 返回指定目录下的所有文件和目录 ...

  5. python保存文件到指定文件夹_python实现指定文件夹下的指定文件移动到指定位置...

    本文主要是写了一个将指定文件夹下的指定文件类型移动到指定位置,具体内容如下 # coding:utf-8 import os import shutil import sys reload(sys) ...

  6. python设置文件权限_PYTHON学习之文件操作;

    PYTHON学习之文件操作: 文件内容替换 for line in flielinput.input("filepath",inplace=1): line = line.repa ...

  7. python修改文件后缀_python实现遍历文件夹修改文件后缀

    本文实例为大家分享了python实现遍历文件夹修改文件后缀的具体代码,供大家参考,具体内容如下 用法 python Modifer.py ./ -fp java xml # coding:utf-8 ...

  8. python目录下的文件夹_Python列出当前文件夹下文件的两种方法

    使用Python做一些自动化操作时,经常与文件夹和文件打交道,这就依赖于OS模块了. OS是Operate System的缩写,是Python标准库中一个用于访问操作系统功能的模块,OS模块中的接口可 ...

  9. 怎样用python批量处理文件夹_python批量处理文件或文件夹

    本文实例为大家分享了python批量处理文件或文件夹的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- import os,shutil import sys imp ...

最新文章

  1. 模拟linux文件系统的设计及实现_Linux后台服务器开发中,内存池设计与实现(c/c++)...
  2. 自动布局(autoLayout)演练2
  3. Instagram:如何提升音乐音频质量?
  4. Spring Security 3 Ajax登录–访问受保护的资源
  5. 611. 有效三角形的个数
  6. pandas plot label_数据科学| 手把手教你用 pandas 索引、汇总、处理缺失数据
  7. usb一转多 树莓派zero_树莓派 Zero USB/以太网方式连接配置教程
  8. 用dl元素编辑html个人信息,html dl dt dd标签元素语法结构与使用
  9. 信息学奥赛一本通(2038:【例5.5】最大数位置)
  10. JAVA 1.5 并发之 Executor框架 (内容为转载)
  11. c语言中Oo是什么进制整数字,C语言中的大小端存储及原码补码反码的运算关系 %d %u...
  12. Direcshow之视频捕捉
  13. 如何做口碑营销?企业实施网络口碑营销的技巧
  14. 中国科学院计算机技术研究院,赵屹(中国科学院计算技术研究所研究员)_百度百科...
  15. Ubuntu下安装微信(非网页版)、TIM、QQ
  16. 贵州杰赛s65机顶盒子CPU S905M-B 刷机教程及纯尽版固件
  17. Mark - HDFS性能压测工具
  18. 好的代码结构是什么样的?
  19. 【金猿投融展】Kyligence——改变人类使用数据的习惯
  20. ReentrantReadWriteLock入门级

热门文章

  1. oracle10g 监听服务无法启动
  2. 深度学习环境搭建之Anaconda安装keras
  3. linux db2备份,db2实现备份
  4. post发送byte数组_KAFKA消息发送
  5. excel模糊搜索_Excel进阶篇:星号*用法,学会这些功能的,都按时加班了
  6. 分区助手扩大c盘后自动修复_磁盘分区工具,这个好用;无论调整C盘还是系统迁移...
  7. linux nfs命令,linux命令:NFS服务
  8. 计算机二级公共基础知识2020版电子版,2020年计算机二级考试公共基础知识背诵笔记...
  9. 设置线程堆栈大小_哇擦,传说中的堆栈溢出和快速排序
  10. python函数type的用意_python中type()是什么意思