Pandas统计分析基础(3):DataFrame功能介绍及DataFrame中元素的增、删、改、查

✅作者简介:大家好我是Xlong,一枚正在学习COMSOL、Python的工科研究僧
个人主页:  Xlong的个人博客主页
系列专栏:   Python大数据分析
如果觉得博主的文章还不错的话,请支持一下博主哦

目录

一、 DataFrame功能介绍

1.1 DataFrame元素的读取

方法1:可以将DataFrame转化成ndarray后读取

方法2: 可以通过列名(字典数据类型里的key值)来索引列,再通过跟ndarray相同的索引方式索引行

方法3:DataFrame.loc 和.iloc两种读取方法(建议使用)

1.2 DataFrame中元素的修改

1.3 DataFrame添加、删除元素 

1.3.1 添加列或行

1.3.2 删除行或列,pd.DataFrame.drop 

1.3.3 DataFrame数据的备份


一、 DataFrame功能介绍

1.1 DataFrame元素的读取

        要注意区别和二维数组的读取方式不同!

import numpy as np
arr=np.ones([2,3])
print(arr,'\n')
print(arr[0,1])

 运算结果:

[[1. 1. 1.]
 [1. 1. 1.]]

1.0

import numpy as np
import pandas as pd
arr=np.ones([2,3])
print(arr,'\n')
df=pd.DataFrame(arr,index=['第一行','第二行'],columns=['第一列','第二列','第三列'])
print(df)
#print(df[0,1])   #会报错:KeyError: (0, 1)

运行结果:

[[1. 1. 1.]
 [1. 1. 1.]]

     第一列  第二列  第三列
第一行  1.0  1.0  1.0
第二行  1.0  1.0  1.0

        DataFrame不支持以刚才代码中的方式读取数据,可以认为其各列是以字典形式储存,不支持按序号索引。

方法1:可以将DataFrame转化成ndarray后读取

import numpy as np
import pandas as pd
arr=np.ones([2,3])
print(arr,'\n')
df=pd.DataFrame(arr,index=['第一行','第二行'],columns=['第一列','第二列','第三列'])
print(df,'\n')
#print(df[0,1])   #会报错:KeyError: (0, 1)
# values属性会返回一个ndarray数组
print(df.values,'\n')
print(type(df.values))

运行结果:

[[1. 1. 1.]
 [1. 1. 1.]]

     第一列  第二列  第三列
第一行  1.0  1.0  1.0
第二行  1.0  1.0  1.0

[[1. 1. 1.]
 [1. 1. 1.]]

import numpy as np
import pandas as pd
arr=np.ones([2,3])
df=pd.DataFrame(arr,index=['第一行','第二行'],columns=['第一列','第二列','第三列'])
print(df.values,'\n')
print(df.values[0,1])

运行结果:

[[1. 1. 1.]
 [1. 1. 1.]]

1.0

方法2: 可以通过列名(字典数据类型里的key值)来索引列,再通过跟ndarray相同的索引方式索引行

import numpy as np
import pandas as pd
arr=np.ones([2,3])
df=pd.DataFrame(arr,index=['第一行','第二行'],columns=['第一列','第二列','第三列'])
print(df.index,'\n')
print(type(df.index),'\n')
print(df.columns,'\n')
print(type(df.columns),'\n')
print(df['第一列'][0],'\n')
print(df[:][1:]) #第一个中括号里的冒号表示所有列

运行结果:

Index(['第一行', '第二行'], dtype='object')

Index(['第一列', '第二列', '第三列'], dtype='object')

1.0

     第一列  第二列  第三列
第二行  1.0  1.0  1.0

 要注意下述方式会等效为df[:][1:],但下述写法是存在歧义的,不推荐使用

df[1:3]  #这种写法不推荐

方法3:DataFrame.loc 和.iloc两种读取方法(建议使用)

注意,这两种方法都是先行后列,与上边的先列后行相反

import numpy as np
import pandas as pd
arr=np.ones([2,3])
df=pd.DataFrame(arr,index=['第一行','第二行'],columns=['第一列','第二列','第三列'])
print(df.loc['第一行','第一列'],'\n')
print(df.loc['第一行','第一列':'第二列'],'\n')
#loc提供了类似二维数组的读取方法,但只接收行名和列名,区间是左闭右闭的)
print(df.loc[[True,False],'第一列'],'\n')

运行结果:

1.0

第一列    1.0
第二列    1.0
Name: 第一行, dtype: float64

第一行    1.0
Name: 第一列, dtype: float64

iloc则要接收数字编号,与.loc不同,不能混用

import numpy as np
import pandas as pd
arr=np.ones([2,3])
df=pd.DataFrame(arr,index=['第一行','第二行'],columns=['第一列','第二列','第三列'])
#print(df.iloc['第二行','第一列'],'\n') #iloc则要接收数字编号,与.loc不同,不能混用
print(df.iloc[1,0])

运行结果:

1.0

1.2 DataFrame中元素的修改

        只要能读出元素的方式,都可以用来进行赋值修改。

import numpy as np
import pandas as pd
arr=np.ones([2,3])
df=pd.DataFrame(arr,index=['第一行','第二行'],columns=['第一列','第二列','第三列'])
df.iloc[0,1]=5 #把5赋给第一行&第二列位置
print(df,'\n')
df.loc[[True,False],'第二列']=[4] #把4赋给第一行&第四列位置
print(df)

运行结果:


     第一列  第二列  第三列
第一行  1.0  5.0  1.0
第二行  1.0  1.0  1.0

     第一列  第二列  第三列
第一行  1.0  4.0  1.0
第二行  1.0  1.0  1.0

1.3 DataFrame添加、删除元素 

1.3.1 添加列或行

添加比较简单,直接对新的行列名赋值即可。

import numpy as np
import pandas as pd
arr=np.ones([2,3])
df=pd.DataFrame(arr,index=['第一行','第二行'],columns=['第一列','第二列','第三列'])
df['第四列']=[2,3]
print(df,'\n')
df.loc['第五行']=6
print(df)
'''不推荐使用以下形式添加行
df[:]['第N行']=9
print(df)''

运行结果:

           第一列  第二列  第三列  第四列
第一行  1.0  1.0  1.0    2
第二行  1.0  1.0  1.0    3

          第一列  第二列  第三列  第四列
第一行  1.0  1.0  1.0    2
第二行  1.0  1.0  1.0    3
第五行  6.0  6.0  6.0    6

1.3.2 删除行或列,pd.DataFrame.drop
 

import numpy as np
import pandas as pd
arr=np.ones([2,3])
df=pd.DataFrame(arr,index=['第一行','第二行'],columns=['第一列','第二列','第三列'])
dfr=df.drop('第一列',axis=1)  #删除'第一列'这列,axis=1表示是列
'''但要注意,默认情况下,drop命令是返回一个删除了'第一列'之后的DataFrame,
并不是在df里把'第一列'删了'''
print(dfr)
print(df)

运行结果:

           第二列  第三列
第一行  1.0  1.0
第二行  1.0  1.0
           第一列  第二列  第三列
第一行  1.0  1.0  1.0
第二行  1.0  1.0  1.0

如果想在原始DataFrame中执行删除,需要修改属性inplace=True

import numpy as np
import pandas as pd
arr=np.ones([2,3])
df=pd.DataFrame(arr,index=['第一行','第二行'],columns=['第一列','第二列','第三列'])
df.drop('第二行',axis=0,inplace=True)
print(df)

运行结果:

            第一列  第二列  第三列
第一行  1.0  1.0  1.0

1.3.3 DataFrame数据的备份

import numpy as np
import pandas as pd
arr=np.ones([2,3])
df=pd.DataFrame(arr,index=['第一行','第二行'],columns=['第一列','第二列','第三列'])
dfback=df
print(dfback)
df.iloc[0,0]=3
print(df)
print(dfback)
print(id(df))
print(id(dfback))

运行结果:

         第一列  第二列  第三列
第一行  1.0  1.0  1.0
第二行  1.0  1.0  1.0
        第一列  第二列  第三列
第一行  3.0  1.0  1.0
第二行  1.0  1.0  1.0
       第一列  第二列  第三列
第一行  3.0  1.0  1.0
第二行  1.0  1.0  1.0

2404490356528
2404490356528

可见:直接赋值的形式并不能复制DataFrame,只是起了个新名字,指向的还是同一个内容

如果想复制一个DataFrame,需要使用copy包

这个包是python自带的,一般不需要另外安装

import numpy as np
import pandas as pd
import copy
arr=np.ones([2,3])
df=pd.DataFrame(arr,index=['第一行','第二行'],columns=['第一列','第二列','第三列'])
dfback1=copy.deepcopy(df)
print(dfback1)
print(df)
df.iloc[0,0]=10
print(df)
print(dfback1)

运行结果:

        第一列  第二列  第三列
第一行  1.0  1.0  1.0
第二行  1.0  1.0  1.0
        第一列  第二列  第三列
第一行  1.0  1.0  1.0
第二行  1.0  1.0  1.0
       第一列  第二列  第三列
第一行  10.0  1.0  1.0
第二行   1.0  1.0  1.0
      第一列  第二列  第三列
第一行  1.0  1.0  1.0
第二行  1.0  1.0  1.0

         以上就是《Pandas统计分析基础(3):DataFrame功能介绍及DataFrame中元素的增、删、改、查》,如果有改进的建议,欢迎在评论区留言交流~

        持续更新中......原创不易,各位看官请随手点下Follow和Star,感谢!!!

你可能感兴趣的:(Python大数据分析,Python学习,学习,python,pycharm,大数据)