数据分析入门——美国各州人口分析

1.案例数据来自python数据分析手册,github地址:https://github.com/jakevdp/PythonDataScienceHandbook/tree/master/notebooks/data

        不克隆项目,怎么在github下载单个文件?:https://www.cnblogs.com/zhaoqingqing/p/5534827.html

2.pandas读取文件,参考:https://blog.csdn.net/sinat_29957455/article/details/79054126

1.导入三剑客的包:

  

2.读取数据:

   read_csv可以读取1G的数据(excel无法打开)

   读入各州缩写:

   

  读入各州面积:

  

  读入各州人口:

  

3.合并pop和abbr两个df

  使用简称,合并全称,可知,需要使用merge:

  并且,左右两列没有相同columns,需要使用left_on/right_on来进行限定;

  

  由于默认使用的是内连接,所以通过shape发现会有部分未连接上的数据,通过how,可以控制内外连接方式:

  

  //使用right右连接,也会出现2448,原因是虽然右表只有51条,但是左表有多条对应,会出现一对多

   发现用于连接的列,有重复的列,我们可以使用drop进行删除一列:通过axis控制,我们就删除了一列:

  

  但是特别注意,drop返回的是删除后的新DF,原先的DF未改变(这点可以通过看控制台是否输出了内容,有输出时则是返回了新的数据,没有则是在原基础上修改)

要想在原基础上修改,需要控制inplace参数:

  

  

  通过isnull()返回和原先形状相等的df,再通过any看哪一列有空值:

  

   进一步,通过空值操作,可以查看具体哪些州有数据缺失:(通过unique来查看唯一值)

  

  下一步,使用正确的值,填充这些缺失值:(通过boolean值来进行筛选,注意boolean这个Series的产生)

  

  USA的处理,同理:

  

  验证结果:(可以发现state已经没有空值)

  

4.合并pop和areas两个df

  同样,使用merge:(注意这里使用left合并)

  

  继续使用isnull()来检测空值:

  

  发现area有空值,我们继续使用上面类似的方法,空值检测并填充:

    具体这里是先检测area列的bool值,再通过pop3取到哪些state是空:

  

    可以通过dropna来删除含有空数据的行:(dropna的文档注意查看)

  

    检查空值处理结果:

    

5.使用query查找数据

  使用query来进行数据检索:https://blog.csdn.net/tcy23456/article/details/85887334

  

  对查询结果进行索引重排,使用set_index,使得state成为新的Index:(注意通过inplace控制替换原值)

  

  通过计算,返回人口密度的series:

  

  通过sort_values进行数据排序:

    进一步的,可以通过切片或者tail()函数取最小的几个,取top几

  

  使用merge,可以将计算出的密码,融合进去人口结果集:

    此处需要将Series转换为df再计算:

  

 

posted @ 2019-08-17 16:32  ---江北  阅读(1011)  评论(0编辑  收藏  举报
TOP