数据分析实例测试
案例背景:美国国家公园给了两个数据表,分别是各个物种的保护程度统计和在各公园目击到的次数,作为数据分析师,需要帮助他们从杂乱繁多的数据中找出濒临灭种的物种,以及在各公园目击到特定物种的次数。
准备数据
1.开局先导入python数据分析模块三剑客加上一个后面要用到的卡方检验:
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
from scipy.stats import chi2_contingency
用read_csv()方法导入数据源,打印前几行观察数据结构:
####用panads库读取csv文件获得数据
species = pd.read_csv('species_info.csv')
pd.set_option('display.max_columns', None) #在打印数据表时列显示完全,
# print (species.head()) #打印前几行观察,了解表的结构
可以看到数据列有category, scientific_name, common_name, conservation_status,其中conservation_status有空值。
数据清洗
1.缺失值的处理:
在这里,为了对数据源有更进一步的了解,先统计以下几个信息:物种数、物种名称、保护状态的名称。
####统计物种数,nunique可以去重,返回计数值
species_count = species.scientific_name.nunique()
print(species_count)
####统计物种和保护状态的名称,unique返回去重后的数组或列表
species_type = species.category.unique()
conservation_statuses = species.conservation_status.unique()
print(conservation_statuses)
print(species_type)
再对每一种保护状态下的物种数目进行统计,这里要注意使用nunique方法去重计数,刚开始我认为scientific_name具有唯一性,所以用了count方法对scientific_name计数,但在进入到数据源中检查的时候发现这个值并不唯一(这里猜想有两种情况,从网上找的数据源没有标准数据库好看即没有设置主键,或者真实数据就是这样,btw:我也想不通为什么学名一样的物种有不同的俗名)。
####对每一种保护状态下的物种进行计数,注意使用nunique方法去重计数,
####起初认为scientific_name具有唯一性用了count方法计数,但检查数据的时候发现其并不唯一
conservation_counts = species.groupby('conservation_status').scientific_name.nunique().reset_index()
print(conservation_counts)
| conservation_status scientific_name
0 Endangered 15
1 In Recovery 4
2 Species of Concern 151
3 Threatened 10
发现conservation_status为空的值不会被gr