Pandas库DataFrame基本知识

目录

1.简介

2.基本构造和访问

3.set_index()函数    

4. 查询与切片

4.1 查询和修改

4.2 切片

5. 转置矩阵

6.  空缺值处理函数

6.1 insull()函数

6.2 dropna()函数

6.3 fillna()函数

7.  排序函数sort_values()和sort_index()

8. value_count()函数

9. replace()函数


1.简介

Series 与DataFrame是pandas库中的核心数据类型。 DataFrame 是二维表格,其每一列都是一个Series。

2.基本构造和访问

2.1创建(注意各个数据之间的逗号必不可少)

1.用字典方式

2.用数组方式创建

例:

import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
#1.以列表方式创建
data0=[[93,3,383,333,33],[99,9,989,999,99],[96,6,686,666,66],[91,1,181,111,11],[96,6,686,666,66],[97,7,787,777,77]]
df1=pd.DataFrame(data=data0,index=["y1","y2","y3","y4","y5","y6"],columns=["一","二","三","四","五"])

#2.以字典方式进行创建
data={"一":[93,99,96],
      "二":[3,9,6],
      "三":[33,99,66]}
df2=pd.DataFrame(data,index=["y1","y2","y3"])

print(df1)
print(df2)

输出结果:

    一  二   三   四  五
y1  93   3  383  333  33
y2  99   9  989  999  99
y3  96   6  686  666  66
y4  91   1  181  111  11
y5  96   6  686  666  66
y6  97   7  787  777  77


    一  二  三
y1  93   3  33
y2  99   9  99
y3  96   6  66

..df中各行各列可以是不同数据类型。

创建df时可以不指定索引(列索引index/行索引columns),默认索引将是从0开始,1为步长的数组。

3.set_index()函数    

此函数的作用是 :将某行重新设置为索引。

set_index(列索引,drop=Ture)

参数drop:将某列设置为索引后,是否将其从df数据中删除。默认为Ture删除,False为保留。

reset_index()    用于将索引恢复成默认值。

例:

#重新设置索引
df1=df1.set_index(["二"])
print(df1)
#恢复默认索引
df1=df1.reset_index()
print(df1)

输出结果:

    一   三   四  五
二                  
3   93  383  333  33
9   99  989  999  99
6   96  686  666  66
1   91  181  111  11
6   96  686  666  66
7   97  787  777  77


   二  一   三   四  五
0   3  93  383  333  33
1   9  99  989  999  99
2   6  96  686  666  66
3   1  91  181  111  11
4   6  96  686  666  66
5   7  97  787  777  77
 

4. 查询与切片

4.1 查询和修改

 查询某列  df["列索引"]

  查询某个数据 df["列索引"]["行索引"]

例:

print(df2["三"])
print("\n")
print(df1["三"]["y1"])
print("\n")
df1["三"]["y1"]="Y"
print(df1["三"]["y1"])

输出结果:

y1    33
y2    99
y3    66
Name: 三, dtype: int64


383


Y

4.2 切片

 iloc[开始行下标:结束行下标,开始列下标:结束列下标]   (不含右端点)

loc[行标签:行标签,列标签:列标签]    (左右端点都包含)

列:

#取所有行的第3到4列(下标都是从0开始)
print(df1.iloc[:,2:4])
print("\n")
#取y1至y4列的”二“到”四“列
print((df1.loc["y1":"y4","二":"四"]))
print("\n")
#取第0和第1行的第2,4列
print(df1.iloc[:2,[1,3]])

输出结果:


     三   四
y1  383  333
y2  989  999
y3  686  666
y4  181  111
y5  686  666
y6  787  777


    二   三   四
y1   3  383  333
y2   9  989  999
y3   6  686  666
y4   1  181  111


    二   四
y1   3  333
y2   9  999
 

5. 转置矩阵

df.T       行列互换

例:

print(df1.T)

输出结果:

     y1   y2   y3   y4   y5   y6
一   93   99   96   91   96   97
二    3    9    6    1    6    7
三  383  989  686  181  686  787
四  333  999  666  111  666  777
五   33   99   66   11   66   77

6.  空缺值处理函数

6.1 insull()函数

此函数的作用是 :是判断是否含有缺失值。

df.isnull()

print(df1.isnull())

输出结果:

       一     二     三     四     五
y1  False   True   True  False   True
y2  False   True  False   True  False
y3  False   True  False   True  False
y4  False  False  False  False  False
y5  False  False  False  False  False
y6  False  False  False  False  False

isnull().any()

print(df1.isnull().any())

输出结果:
一    False
二     True
三     True
四     True
五     True
 

[df.isnull().values==True]

print(df1.isnull().values==True)

输出结果:

[[False  True  True False  True]
 [False  True False  True False]
 [False  True False  True False]
 [False False False False False]
 [False False False False False]
 [False False False False False]]


df.isnull().sum()

print(df1.isnull().sum())

输出结果:

一    0
二    3
三    1
四    2
五    1

6.2 dropna()函数

此函数的作用是 : 删除空缺值所在的行或列。

df.dropna(axis=0,how=’any’,thresh=n,subset,inplace=False)

参数 说明
axis=(0,1) 按照行或者列来进行填充,默认为0按行
how=(any,all) ‘any’指带缺失值的所有行/列;'all’指清除一整行/列都是缺失值的行/列,默认为any所有
thresh=n 保留至少含有n个非空缺值的行
subset 删除特定列中包含缺失值的行或列,
inplace=(False,Ture) 是否用排列后的数据替换排列前的,默认为False重新生成一个DF副本

注意:不能同时设置 how 和 thresh 参数。

例子:

df1.iloc[1:3,[1,3]]=np.nan #设置空缺值
df1.iloc[0,[1,2,4]]=np.nan #设置空缺值
print(df1)
print(df1.dropna(axis=1,how='any',inplace=False))
print(df1.dropna(subset=["二"],inplace=False))

输出结果:

    一   二     三     四    五
y1  93  NaN    NaN  333.0   NaN
y2  99  NaN  989.0    NaN  99.0
y3  96  NaN  686.0    NaN  66.0
y4  91  1.0  181.0  111.0  11.0
y5  96  6.0  686.0  666.0  66.0
y6  97  7.0  787.0  777.0  77.0


    一
y1  93
y2  99
y3  96
y4  91
y5  96
y6  97


    一   二     三     四    五
y4  91  1.0  181.0  111.0  11.0
y5  96  6.0  686.0  666.0  66.0
y6  97  7.0  787.0  777.0  77.0
 

6.3 fillna()函数

此函数的作用是 :指定的值去填充DF中的空缺值。

df.fillna(填充数据,inplace=False,mthod,limit,axis=0)

参数 说明
inplace=(False,Ture) 是否用排列后的数据替换排列前的,默认为False重新生成一个DF副本
axis=(0,1) 按照行或者列来进行填充,默认为0按列
mothod(ffill,bfill) 复制空值前面(ffill)还是后面(bfill)的数据,若不用这个参数,不声明即可。
limit() 限制修改几个空缺值

例子:

df1.iloc[1:3,[1,3]]=np.nan #设置空缺值
df1.iloc[0,[1,2,4]]=np.nan #设置空缺值
print(df1)
print(df1.fillna(100,inplace=False,limit=1,axis=0))

输出结果:

     一    二       三       四       五
y1  93  NaN    NaN  333.0   NaN
y2  99  NaN  989.0    NaN  99.0
y3  96  NaN  686.0    NaN  66.0
y4  91  1.0  181.0  111.0  11.0
y5  96  6.0  686.0  666.0  66.0
y6  97  7.0  787.0  777.0  77.0

    一     二     三     四     五
y1  93  100.0  100.0  333.0  100.0
y2  99    NaN  989.0  100.0   99.0
y3  96    NaN  686.0    NaN   66.0
y4  91    1.0  181.0  111.0   11.0
y5  96    6.0  686.0  666.0   66.0
y6  97    7.0  787.0  777.0   77.0

也可通过字典更改指定位置的空缺值(只可以按列来进行填充)

​
print(df1.fillna({"二":100}))

​

输出结果:

    一      二        三        四          五
y1  93  100.0    NaN  333.0   NaN
y2  99  100.0  989.0    NaN  99.0
y3  96  100.0  686.0    NaN  66.0
y4  91    1.0  181.0  111.0  11.0
y5  96    6.0  686.0  666.0  66.0
y6  97    7.0  787.0  777.0  77.0

7.  排序函数sort_values()和sort_index()

sort_values()

此函数的作用是 :将某一行或某一列按大小顺序排列

df.sort_values(by='列名 ',axis=0,ascending=True,inplace=False,na_position='last')

参数说明

参数 说明
axis 指定列名(axis=0或index)或索引值(axis=1或columns)
ascending=(True,False) 指定列的数组升或降序排列,默认为Ture升序
inplace=(False,Ture) 是否用排列后的数据替换排列前的,默认为False重新生成一个DF副本
na_position

缺失值的显示位置,默认为last末尾

sort_index()的参数与sort_values()一致,sort_index()是对索引进行操作

例子:

#sort_values()函数
print(df1.sort_values("三",axis=0,ascending=True,inplace=False,na_position='last'))

输出结果:

    一  二   三   四  五
y4  91   1  181  111  11
y1  93   3  383  333  33
y3  96   6  686  666  66
y5  96   6  686  666  66
y6  97   7  787  777  77
y2  99   9  989  999  99 

8. value_count()函数

此函数的作用是 : 用来统计数据表中,指定列里有多少个不同的数据值,并计算每个不同值有在该列中的个数,并按个数多少进行排序。

df.value_counts(values,sort=True, ascending=False, normalize=False,bins=None,dropna=True,inplace=False)

参数 说明
sort=(True,False)  是否要进行排序;默认True降序排序
ascending=(False,True)  进行升序或者降序排序;默认False降序排序
normalize=(False,True)  是否要对计算结果进行标准化,并且显示标准化后的结果,默认是False否。
bins=None 可以自定义分组区间,默认是否;
dropna=(True,False) 是否删除缺失值,默认True删除

例子:

print(df1.value_counts("三",sort=True, ascending=False,dropna=True))

输出结果:

三   
686.0    2
181.0    1
787.0    1
989.0    1
dtype: int64

9. replace()函数

此函数的作用是 : 查找并替换DF中的数据。

df.replace(to_replace=None,value=None,inplace=False)

参数 说明
to_replace=None 查找要替换的值
value=None 替换与查找到的值
inplace=(False,Ture) 是否用排列后的数据替换排列前的,默认为False重新生成一个DF副本

例子:

print(df1.replace(to_replace=686,value="Y",inplace=False))

输出结果:

    一   二     三     四    五
y1  93  NaN    NaN  333.0   NaN
y2  99  NaN  989.0    NaN  99.0
y3  96  NaN      Y    NaN  66.0
y4  91  1.0  181.0  111.0  11.0
y5  96  6.0      Y  666.0  66.0
y6  97  7.0  787.0  777.0  77.0
 


以上便是常见的Pandas库DataFrame基本知识,欢迎指出错误与补充

你可能感兴趣的:(python数据处理,pandas,python,数据分析)