用Excel演示python中pandas中数据的查询显示方法-python数据分析入门

来源:互联网 发布:bf2怎么修改大炮数据 编辑:程序博客网 时间:2024/05/22 06:45

版权声明:本文为博主原创文章,未经博主允许不得转载。

      pandas是python进行数据分析必须掌握的基本技能。对于许多初学者而言,pandas中最基本的loc,iloc,at,iat等查询方法十分容易混淆。对于体量较小的数据而言excel能较好进行数据分析、整理工作,对于大多数数据工作者对excel都十分的熟悉。为了能更好的理解pandas的查询操作,这里选用excel作为对比材料,对相关的方法进行了描述,希望能对初学者学习pandas有所帮助.

l  pandas的数据结构

pandas 有两个主要的数据结构,Series和DataFrame

Series类似一维数组的对象,简单点可以理解为excel单独的列。

DataFrame可以理解为excel中的一张表,注意Excel表中行编号默认从1开始,pandas是从0开始的。

l  利用pandas建立一张类似excel的表

#加载pandasimport pandas as pd#创建一个Series数据,index是自动添加从0开始编排column_0 = pd.Series(['A_00','A_10','A_20','A_30','A_40'])print(column_0)#创建一个另外四列数据,index是自动添加从0开始编排column_1 = pd.Series(['B_01','B_11','B_21','B_31','B_41'])column_2 = pd.Series(['C_02','C_12','C_22','C_32','C_42'])column_3 = pd.Series(['D_03','D_13','D_23','D_33','D_43'])column_4 = pd.Series(['E_04','E_14','E_24','E_34','E_44'])#生成一个DataFrame,或者说一张Excel表,注意Excel是默认从1开始编排的df = pd.DataFrame({'A' : column_0,                    'B' : column_1,                    'C' : column_2,                    'D' : column_3,                    'E' : column_4,                  })print(df)

输出:

column_0:

      AA_00A_10A_20A_30A_40


df:

      A     B     C     D     E
A_00  B_01  C_02  D_03  E_04A_10  B_11  C_12  D_13  E_14A_20  B_21  C_22  D_23  E_24A_30  B_31  C_32  D_33  E_34A_40  B_41  C_42  D_43  E_44

excel做一张同样的表,请仔细对比和理解pandas中的DataFarme和excel表的区别和联系。为了便于理解将列DataFarme设计成Excel的形式从A开始编号。

l  如何在选取行(行的切片)--------[i:j]

Excel有交互界面可以任宜的选取行数据。


请注意在选取行的时候,行和列的编号也是被选中的。

Pandas选取行的方法

df[i,j]选取的是从i行道j-1行,所以df[1:3]为:

      A     B     C     D     EA_10  B_11  C_12  D_13  E_14A_20  B_21  C_22  D_23  E_24

df[:j]选取的是从0到j-1行,df[i:]选取的是从i行道最后一行,所以df[2:]为:

      A     B     C     D     EA_20  B_21  C_22  D_23  E_24A_30  B_31  C_32  D_33  E_34A_40  B_41  C_42  D_43  E_44

通过上述方法可以实现excel中行数据的显示。

l  如何在选取列(列的切片)----------.loc以及.iloc


df.loc[:,['A']] #选取列名的列数据,选取多列用逗号隔开。输出结果为:
      AA_00A_10A_20A_30A_40
df.loc[0:2,['A']] #选取行列名的列数据,选取多列用逗号隔开。输出结果为:
      AA_00A_10A_20

Iloc与loc的区别在于,loc用的是行列的值作为引用的数据,而iloc用的是编号。

df.loc[0:2,['A']] 等同于 df.iloc[0:3,0:1] 

请思考为什么前置0:2显示3列,而后者显示3列是0:3?

df.loc[:,['A']] 等同于 df.iloc[:,0:1] 

理解了上述方法,基本可以选取到需要的切片了。

l  如何选取指定单元格的值(注意只是值,没有行列名)----------.at以及.iat


如果我们想快速的修改表中的某个值,必须有办法获取这个单元格的值,这里就要用到at以及iat,两者的区别类似loc以及iloc。

df.at[3,'B'] #输出结果为
B_31
df.at[3,'B'] 等同于  df.iat[3,1]

这个建立这个excel表的意义在于帮助理解python中的编号。

修改表中的值

df.iat[3,1] = 'select' #表变为:
      A       B     C     D     EA_00    B_01  C_02  D_03  E_04A_10    B_11  C_12  D_13  E_14A_20    B_21  C_22  D_23  E_24A_30  select  C_32  D_33  E_34A_40    B_41  C_42  D_43  E_44