前面利用python的openpyxl库对excel做了简单基础操作,大家可以打开公众号右下角往期回顾,可以复习查看。今天开始介绍python可以操作Excel的另一个强大的库——pandas库。
个人认为,pandas库对于操作Excel有着极好的支撑。在数据导入、数据清洗、数据计算、数据导出都有着完整性的支撑,是一个提供高性能易用数据类型和分析工具,并且用一段时间你就会发现如果拿pandas只操作表格数据,是真的大材小用。 它不仅可以处理数据,更可以可视化数据。譬如可以做出这样的图表。并且是html形式的。当然还有特别多的类型,这个后面再说。
总而言之,pandas处理数据第一、数据量要够大够多,否则用Excel处理就行了。第二、每天重复的操作,例如打开同样的表格、删除同样的列、查找同样的数据。再适合不过了。
接下来再说说pandas与之前openpyxl库哪个好?
两个库其实都差不多,对数据以及图表都有很好的支持,但从写入数据与读取数据的速度来看,pandas更胜一筹。我也比较喜欢用pandas,至于图表这一块我们后面在可视化的专题在讨论。
0 1
安装
对于安装,请自行百度,不在赘述,简单而言两条命令:
安装:cmd——输入 pip install pandas
导入:import pandas as pd
0 2
读取
一、读取Excel文件,以下是几个常用的参数释义。pandas.read_excel(path, sheet_name = 0, header = 0, names = None index_col = None, usecols = None)
1path:文件路径
import pandas as pddata = pd.read_excel(r"C:\Users\Administrator\Desktop\1.xlsx")print(data)
2header:指定作为列名的行,默认0,即取第一行的值为列名。数据为列名行以下的数据;若数据不含列名,则设定 header = None。
import pandas as pddata = pd.read_excel(r"C:\Users\Administrator\Desktop\1.xlsx",header = 0)print(data)
3sheet_name 读取第几个sheet表,0为第一个表。
import pandas as pddata = pd.read_excel(r"C:\Users\Administrator\Desktop\1.xlsx",header = 0, sheet_name = 0)print(data)
4usecols:读取表中的那一列,可以传入一列表索引,也可以传入列名称。
import pandas as pddata = pd.read_excel(r"C:\Users\Administrator\Desktop\1.xlsx",header = 0, sheet_name = 0,usecols=[0,1])print(data)
import pandas as pddata = pd.read_excel(r"C:\Users\Administrator\Desktop\1.xlsx",header = 0, sheet_name = 0,usecols=["基站名称"])print(data)
5index_col:指定列为索引列,默认None列(0索引)用作DataFrame的行标签。
import pandas as pddata = pd.read_excel(r"C:\Users\Administrator\Desktop\1.xlsx",header = 0, sheet_name = 0,usecols=[0,1,2],index_col = 0)print(data)
二、读取csv文件,与读取xlsx的参数差不多,只是多了几个参数 1encoding:指定字符集类型,通常指定为’utf-8’。而我经常用的是GBK,用 ’utf-8’会报错。并且csv没有sheet_name参数。
import pandas as pddata = pd.read_csv(r"C:\Users\Administrator\Desktop\1.csv",header = 0, usecols=[0,1,2],index_col = 0, encoding = "gbk")print(data)
2sep:指定分隔符。如果不指定参数,则会尝试使用逗号分隔。
import pandas as pddata = pd.read_csv(r"C:\Users\Administrator\Desktop\1.csv",header = 0, usecols=[0,1,2],index_col = 0, encoding = "gbk",sep = ",")print(data)
end