数据地图:如何大致看一下数据分布情况

问题描述

我们每次拿到数据时,需要看看数据是否有如下的潜在问题:

  • 重复变量
  • 可能的错误
  • 丢失值
  • 变量转换

如何大致看一下我们的数据分布情况,从而可以查看数据的潜在问题。数据地图就是干这个事情的。

数据举例

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)为分类标准,进行平均值的统计,就能得到如图所示的结果。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容