目录
本文主要针对Python Pandas模块初学者,旨在详细梳理一些Python Pandas模块的基础知识,帮助一些跟我一样几乎没有变成经验的人快速入门。背景:本科四年为文科学生,几乎没有编程经验,在此分享一些一段时间以来基础学习的心得。
一、编译器、模块安装及源数据
1.编译器及模块安装
我使用的编译器是Pycharm Community,百度即可安装免费的社区版本。值得注意的是似乎并不是您安装完了Pycharm就意味着完成了Python的安装并可以进行编写,一般需要再进一步安装pandas包,在Pycharm中安装Pandas的详细教程可见(其他包均类似):在Pycharm中安装Pandas库方法(简单易懂)_Sual的博客-CSDN博客_pandas库安装
2.本文中数据源格式
在这篇文章中所有使用的数据形式如下图所示,保存形式为.xlsx文件。如果您使用其他形式的文件,可以考虑另存为xlsx后缀。
二、表格导入及输出
1.Excel文件导入及基本结构
依赖Pandas进行表格读取,您只需要以下两行代码:
import pandas as pd df = pd.read_excel("/Applications/测试数据.xlsx")
其中,import导入包,read_excel括号内内容为测试数据所在的绝对文件路径,您需要修改括号内内容为您电脑中的测试数据位置。
对于Pandas读取的表格输出,在初学阶段可以考虑两种形式,第一种输出方式为输出成Excel文件,代码如下:
df.to_excel("Excel名字.xlsx")
执行代码成功之后,在Pycharm的左侧列表即可找到这个文件。我一般对于一些重要的中间结果/最终结果才会使用这种方式进行输出。第二种输出方式,为直接在下方的指令窗口中输出,代码如下:
print(df)
结果如下:
这里可以着重看一下上图中的输出结构。在使用Pandas处理Excel数据时,常用的数据结构为DataFrame,也就可以解释为何会习惯性使用简称df。在DataFrame中包含三个部分,index(行数)、Header(列名)、以及表格本体。从上图看,最左侧 0、1、2、...、11 列为index;最上侧“年份”、“筛选名称列”、...、“文本信息3"为header。其中,index会由Pandas自动生成,而header中的内容我们可以直接在Excel中进行编辑。注意:行数和列数都应从0开始计数。
此外,对于表格中的空单元格,Pandas使用NaN进行了填充。
2.按行/列的数据输出
在读取完数据之后,本章主要解决的问题是对于数据的选取和修改。
输出DataFrame的某一行或某几行,代码如下:
print(df.iloc[3:4]) #输出df中的第3行 print(df.iloc[0:5]) #输出df中的前5行
Pandas设计了iloc函数来帮助进行选取DataFrame的行信息。注意,在方括号中的范围冒号左侧为闭(包含),冒号右侧为开(不包含)。在打印后,输出的结果(前5行)的结果如下所示:
可以注意的是:这里的数据形式和之前的表格读取数据结构完全一样,也属于DataFrame数据类型。 也就是说它可以进一步用iloc进行选取,验证代码如下:
print(df.iloc[0:5].iloc[0:3]) #输出df中的前5行的前3行
输出DataFrame的某一列或某几列,代码如下:
print(df[["筛选名称列","年份"]]) # 输出df中的"筛选名称列"和"年份"列
同样,该条语句和上文输出几行有着类似的性质,输出结果依旧为DataFrame对象。
3.逐数据的输出方法
从目前我的学习角度,我认为最方便理解的就是通过行数和列数直接锁定数据位置进行逐个数据的输出,这样可以对于DataFrame中每一个的数据进行判断和筛选。对于DataFrame中的逐数据输出可以使用以下语句:
print(df.iloc[2,3]) #输出df中第2行、第3列的元素
值得注意的是,iloc中参数只能为数字,前一个为行数(从0开始计数)后一个为列数(从0开始计数)。结合循环(for)语句即可实现DataFrame中任意方式的数据输出,如:
for i in range (0,len(df)): # 逐个输出df中年份列的内容 print(df.iloc[i,0])
其中,len(df)为df的最大行数。如果对于Python的基础for循环知识存在疑惑的话,可以参考一下基础知识链接:
Python基础-逻辑语句_法拉利轮子的博客-CSDN博客_python逻辑语句
三、表格基本操作---输入
Pandas为表格输入提供了简单的输入方式。
1.按行/列的数据修改
按行和列的数据修改和上述的输出方式类似,使用=号赋值即可。
整行/几行的数据修改,代码如下:
df.iloc[0] = 0 #令表格第0行中所有元素 =0 df.iloc[2:4] = "你好" #令表格第2~3行中所有元素="你好"
整列/几列的数据修改,代码如下:
df['年份'] = '哈哈哈' #令表格中年份列所有元素 = 哈哈哈 df[['年份',"数字信息1"]] = 0 #令表格中年份列和数字信息1列中所有元素 = 0
2.逐数据的输入方法
和数据输入方法类似的,可以依靠行数和列数作为参数进行单个位置上元素的输入,代码如下:
df.iat[0,1] = "咯咯咯" #令0,1单元格中元素 = “咯咯咯”
四、上述知识的简单应用
仅依靠简单的数据输入输出,以及一些简单的基础逻辑判断语句我们能做什么?答案是很多的,结合一些简单的逻辑判断,我们就可以实现:
1、筛选找出“数字信息1”列中大于100的公司名称,并对“数字信息1”列的值进行求和
sum = 0 for i in range (0,len(df)): if (df.iloc[i,2] > 100): sum = sum + df.iloc[i,2] print(sum)
2、根据“数字信息2”列中的数值大小进行分类判断:
for i in range (0,len(df)): if (df.iloc[i,3] == 20): df.iat[i,0] = "数字信息2等于20"
可以实现的功能很多,这里就不进行一一列举了。注意,这里“==”才是是否相等的判断语句,而“=”是赋值语句,没有判别的含义在内。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。同样,Pandas的一些简单应用也并不复杂,或许也只是逻辑语句的拼接,最后想告诉其他一些和我一样非科班选手,对编程要有信心哈。
下一章更新的话,看看啥时候有空了......