Python Pandas数据导入分析:Excel,csv

感觉好久都没逛CSDN了,好久没写文章了,总算闲下来一些,给自己找点事情做吧。之前因为研究,更了一些LabVIEW的文章,这里的话,说一下,如果有问题,我也没办法,为什么没办法呢,因为懒。

最近做数据分析,经常用到pandas库。所以写个总结,有需要的小伙伴们可以自行看一下呀。如果有错误的话呢,那就有错误吧,我也是写一下总结,梳理自己的经验。

更多的内容大家可以去pandas的官网上弄文档看,这里我就提供一下网址吧。进入网址后,可以通过搜索按钮,找到自己需要的内容。

https://pandas.pydata.org/docs/

0 准备

关于库的安装,如果你读取失败,因为你只安装了pandas库,你还需要pip一下xlrd, xlwt, openpyxl。还是不行,就把官方文档里的这些全弄下来:

再不行,考虑换台机子。

准备阶段的话,我一般习惯是在项目文件夹中新建两个文件夹:

InputArea01OutputArea02,明显,第一个是存放我需要处理的文件,第二个是导出我处理后的文件。如果会产生一些中间文档,我还会新建一个RelayArea01。py处理文件就和文件夹同级就好。示例如下:

> InputArea01
> OutputArea02
Py01toProcData.py

导入的库的话,一般涉及到数据分析,想都不想,直接就是导入pandas,numpy。毕竟有时候处理数组比处理DataFrame更加得心应手(个人习惯,大家可以自行选择)。然后就是os库,我的习惯是将py文件所在的文件路径直接弄出来,这样就算是整个项目粘来粘去也不会影响运行。这里还是要注意使用os库,尽量不要使用路径字符串来做,因为使用路径字符串可能之后给别人用的时候需要改路径啥的很麻烦。当然也是看个人。

import pandas as pd
import numpy as np
import os

py_dirname = os.path.dirname(__file__)
input_area_path = os.path.join(py_dirname, "InputArea01")
output_area_path = os.path.join(py_dirname, "OutputArea01")

1 Pandas 库读取excel表格

1.1 单个工作表:给个路径就完事了

首先第一步,肯定是准备好未处理的数据文件啦。把未处理的文件放到InputArea01文件夹中把,我这里就称之为:文件输入1区吧。

然后就是读取了,其实如果你的数据文件比较的简单而且规则,只用到以下代码就好了:

xlsx_filepath = os.path.join(input_area_path, "你的数据文件名.xlsx")

read_data = pd.read_excel(io=xlsx_filepath)

这样就能读取到第一个工作表的内容了,列标签就是你的第一行(没有人会觉得这句话绕吧,如果觉得的话,你品,你细品,就懂了,哈哈)。还有,读到的数据要赋值给一个变量哦,直接pd.read_excel操作,不把数据传给变量,之后怎么操作数据呢,哈哈哈。

1.2 多个工作表:sheet_name参数

许多达瓦里是想把一系列工作表都装在一个xlsx文件中,这样也是可以的,如果你只需要得到其中一个工作表中的数据:

read_data = pd.read_excel(io=xlsx_filepath, sheet_name="工作表名称")

这里有几种方式,一种是数字(整数),从0开始算,比如说sheet_name=0,就是读取第1个表格(单个工作表读取时的sheet_name其实取得默认值就是0),以此类推;还有一种就是工作表名称。

如果你想同时读取多个呢,简单,上列表:

read_data = read_excel(io=xlsx_filepath, sheet_name=[1, 3, "sheet5"])

从上面可以看出来,列表中是可以数字和字符串混用的,不过一般为了防止混淆,就用一样吧。如果是读取所有工作表,直接就sheet_name=None就ok了,善意提醒:None就别带引号了

读取多个工作表返回一个字典,key就是工作表名,value就是对应工作表返回的DataFrame了。

如果你不是很依赖跑代码的速度,一个一个读也没事,我就习惯这样,因为总感觉一大坨再分出一小坨一小坨的,还不如一开始就一小坨一小坨的:

read_data_sheet1 = pd.read_excel(io=xlsx_filepath, sheet_name=0)
read_data_sheet2 = pd.read_excel(io=xlsx_filepath, sheet_name=1)
...类推

1.3 列标签自定义:names

基本来说,很少有就是要去改行索引,都是改列标签,直接传递names参数就好。比如我有4列数据:

read_data = pd.read_excel(io=xlsx_filepath, names=['列1', '列2', '列3', '列4'])

对了,如果说,你的首行就是数据(基本不会吧天爷),那么带上header=None,这样首行就不会作为列标签了,会作为数据。

1.4 设定读取的列:usecols

有的时候吧,别人给你传的数据,总是要在后面求个和,搞一些简单的计算,导致你python读取时,把那一列都搞进去了。这时候,必然就是得设置需要读取的列了:

read_data = pd.read_excel(io=xlsx_filepath, usecols="A:F,H")

usecols的话,第一种格式就是字符串"A,B,C,D", "A:C,F"这种,引号就是从A到C,挺好理解的。引号逗号一定是英文的。另外,"A,B,C"与”A,C,B"是一样的,返回的DataFrame的列的顺序也不会变。

还有其他形式的设定读取的列,这里感觉用这个就够了。

你要是想了解的话,我就和你说吧哈哈。[0, 2, 4],数值型列表,从0开始;['列1', ‘列3']列标签,也就是首行。

1.5 设定读取的行:skiprows, nrows, skipfooter

首先,首选的,就是把你的数据文件好好整清楚一点,没有用的删干净这样就不需要这么麻烦啦。当然,对于批量处理,这里还是说一下吧。

skiprows,也就是跳过的行。这里指的是数据行,默认的,第一行作为列标签嘛,所以如果你传递个skiprows=2,其实你是从xlsx文件中的第4行开始读的,怎么算的呢,首行+跳过的2行。还是那样,如果你的首行直接就是数据,header=None别忘了,这样你的skiprows=2,就是从第3行开始读。

当然关于skiprows还有lambda操作,一般用不到,真用上了,可能数据乱的完蛋了。如果你只想要某些特定的列,还不如全读完,再设定条件筛,我个人的习惯是这样的。

nrows就是读取多少行了,skipfooter就是后面跳过多少行了。

2 Pandas库读取csv表格

python pandas库读取excel表格没有csv文件快,所以,一般对于比较多的数据,我个人推荐是先转csv文件,然后对csv文件进行处理,这样的话会节省很多运行时间,毕竟在处理数据过程中,一般是要经常性的测试代码,所以转csv表格也是方便测试的。

csv文件的读取相比于excel文件的读取方便很多,所以其实你掌握了read_excel操作,read_csv你不看也可以,都一样的,把你觉得用不上的参数不上就行了,比如:sheet_name。

2.1 读取文件

与excel文件读取类似,不过显然,csv文件就没什么工作表了。直接csv文件路径一传就完事了

csv_filepath = os.path.join(input_area_path, "csv文件名.csv")

read_csv = pd.read_csv(filepath_or_buffer=csv_filepath)

2.2 首行数据的处理:header

默认来说,pandas会把首行作为列标签。如果不需要的话,和read_excel类似,header=None。当header=None了,names一般是需要自己设定的,毕竟为了后续处理方便,起个列名也还是有必要的,纯靠1,2,3来索引数据,有时容易混淆。

2.3 设定读取的列与列标签:usecols,names

与read_excel很相似,但是没有"A,B,C"这种方式了,只能通过列标签或者索引(从0开始)来得到你使用的列。一般我是不设置的,先把所有的列都读取进来,然后再筛选使用的列。names就是列标签了,字符串列表就可以了。

2.4 设定读取的行:skiprows, nrows, skipfooter

和read_excel不能说一模一样,只能说完全相同。

读取就先更到这里吧,基本够用了。

有啥问题的话,联系QQ吧:2830437155

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没有棱角的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值