问题描述
我们每次拿到数据时,需要看看数据是否有如下的潜在问题:
- 重复变量
- 可能的错误
- 丢失值
- 变量转换
如何大致看一下我们的数据分布情况,从而可以查看数据的潜在问题。数据地图就是干这个事情的。
数据举例
import pandas as pd
df = pd.DataFrame({
'A': [0, 0, 0, 0, 0, 1, 1],
'B': [1,2,3,5,4,2,5],
'C': [5,3,4,1,1,2,3]})
print(df)
显示如下:
A B C
0 0 1 5
1 0 2 3
2 0 3 4
3 0 5 1
4 0 4 1
5 1 2 2
6 1 5 3
使用group功能来查看数据分布
比如我计划A列表示的是数据一种分类,总共有两种数据,本别时0和1,那么我看看以0,1来分类数据,会有什么结果
a_group_desc = df.groupby('A').describe()
print(a_group_desc)
B C \
count mean std min 25% 50% 75% max count mean std min
A
0 5.0 3.0 1.581139 1.0 2.00 3.0 4.00 5.0 5.0 2.8 1.788854 1.0
1 2.0 3.5 2.121320 2.0 2.75 3.5 4.25 5.0 2.0 2.5 0.707107 2.0
为了结果更好看,我们把矩阵进行做一下转值:
print(a_group_desc.T)
A 0 1
B count 5.000000 2.000000
mean 3.000000 3.500000
std 1.581139 2.121320
min 1.000000 2.000000
25% 2.000000 2.750000
50% 3.000000 3.500000
75% 4.000000 4.250000
max 5.000000 5.000000
C count 5.000000 2.000000
mean 2.800000 2.500000
std 1.788854 0.707107
min 1.000000 2.000000
25% 1.000000 2.250000
50% 3.000000 2.500000
75% 4.000000 2.750000
max 5.000000 3.000000
通过这个结果可以看出
在数据列B中:
0分类:占有5个,平均值时3,std时1.58,min是1.000,max是5
1分类:占有2个,平均值是3.5,std是2.12,min是2.0,max是5.0
在数据列C中:
0分类:占有5个,平均值时2.8,std时1.78,min是1.000,max是5
1分类:占有2个,平均值是2.5,std是0.707,min是2.0,max是3.0
再举个例子
假如说上面的例子不容易理解,我们再举个例子。
>>> df = pd.DataFrame({'Animal' : ['Falcon', 'Falcon',
... 'Parrot', 'Parrot'],
... 'Max Speed' : [380., 370., 24., 26.]})
>>> df
Animal Max Speed
0 Falcon 380.0
1 Falcon 370.0
2 Parrot 24.0
3 Parrot 26.0
>>> df.groupby(['Animal']).mean()
Max Speed
Animal
Falcon 375.0
Parrot 25.0
在这个DataFrame中,我们能够看到Dataframe有两列,分别是动物名称和最大速度。如果我们以动物名称(Animal)为分类标准,进行平均值的统计,就能得到如图所示的结果。