美文网首页
第二章:特征理解——我的数据集中有什么

第二章:特征理解——我的数据集中有什么

作者: 了不起的一一 | 来源:发表于2019-09-30 21:32 被阅读0次

    EDA

    EDA全称为Exploratory Data Analysis,是一种让我们更好理解数据的方法,具体表现为对数据进行可视化操作。这种方法可以告诉我们数据集中有什么,没有什么。

    0. 常用的统计函数Python

    统计均值

    pd.mean( )
    

    1.区分数据类型

    定性数据——categories

    类别,描述数据的属性。如考试等级,天气状况。也可以称为维度。

    定量数据——numerical

    数值,衡量数据的数量。如气温,学生的成绩。也可以称为度量。

    2.数据类型细分

    可以把数据类型细分为4种:定类、定序、定距、定比。
    定类:属于定性数据,只按照名称分类。如血型、动物种类。
    定序:属于定性数据,按名称分类,可以自然排序
    定距:属于定量数据,可以对数据进行排序,进行加减法操作。
    定比:属于定量数据,拥有定距数据的数据,同时还可以进行比较(¥100是¥50的两倍)。

    3.表示方式

    可视化方式:条形\饼形图,箱型图,直方图。

    可视化方式 描述
    条形\饼形图 类别+数值组成。可以是类别+类别的频数,也可以是一个类别+一个数值组成。
    箱型图 表现数据的统计学指标:最小最大值、四分位数等。用于定量数据的统计,但有时候定序数据的频数也可以使用
    直方图 定量数据的分布表现形式

    四种类型与可视化方式

    描述方式\数据类型 定类 定序 定距 定比
    条形\饼形图 Y Y N N
    箱型图 N Y(有时) Y Y
    直方图 N Y(有时) Y Y

    4.举例

    定类

    # 以Grade为例子
    # 统计每个类型的个数
    # 对种类进行计数
    g_count = salary_ranges['Grade'].value_counts().head()
    print(g_count)
    # 画柱状图
    salary_ranges['Grade'].value_counts().sort_values(
        ascending=False).head().plot(kind='bar')
    # 画饼图
    salary_ranges['Grade'].value_counts().sort_values(
        ascending=False).head(5).plot(kind='pie')
    

    定序

    # 可以自然排序,可以数学操作:中位数与百分数
    # 导入旧金山国际机场的喜欢程度数据
    customer = pd.read_csv('./data/2013_SFO_Customer_survey.csv')
    print(customer.shape)
    art_rating = customer['Q7A_ART']
    print(art_rating.describe())
    # 只取1~5
    art_rating = art_rating[(art_rating >= 1) & (art_rating <= 5)]
    art_rating = art_rating.astype(str)
    print(art_rating.describe())
    art_rating.value_counts().plot(kind='pie')
    # art_rating.value_counts().plot(kind='bar')
    # art_rating.value_counts().plot(kind='box')
    

    定距

    # 定量数据-定距类
    climate = pd.read_csv('./data/GlobalLandTemperaturesByCity.csv')
    print(climate.head())
    print('*'*20+'以上是未处理的数据')
    climate.dropna(axis=0,inplace=True)
    print(climate.head())
    print('*'*20+'以上是处理过')
    nastatistic = climate.isnull().sum()
    print(nastatistic)
    print('*'*20)
    climate['AverageTemperature'].hist()
    
    climate['dt'] = pd.to_datetime(climate['dt'])
    climate['year'] = climate['dt'].map(lambda value : value.year)
    climate_sub_us = climate.loc[climate['Country'] == 'United States']
    climate_sub_us['    '] = climate_sub_us['year'].map(lambda x: int (x/100+1))
    climate_sub_us['AverageTemperature'].hist(by=climate_sub_us['century'],
                                                 sharex=True,sharey=True,
                                                 figsize=(10,10),
                                                 bins=20)
    
    climate_sub_us.groupby('century')['AverageTemperature'].mean().plot(kind='line')
    

    定比

    salary_ranges = pd.read_csv('Salary_Ranges_by_Job_Classification.csv')
    fig = plt.figure(figsize=(15,5))
    ax = fig.gca()
    salary_ranges['Biweekly High Rate'] = salary_ranges['Biweekly High Rate'].map(lambda value: value.replace('$',''))
    # Check to see the '$' has been removed
    salary_ranges.head()
    # Convert the Biweeky columns to float
    salary_ranges['Biweekly High Rate'] = salary_ranges['Biweekly High Rate'].astype(float)
    # Convert the Grade columns to str
    salary_ranges['Grade'] = salary_ranges['Grade'].astype(str)
    # check to see if converting the data types worked
    salary_ranges.info()
    salary_ranges.describe()
    # Which Grade has the highest Biweekly high rate
    # What is the average rate across all of the Grades
    # Highest Salary
    salary_ranges.groupby('Grade')[['Biweekly High Rate']].mean().sort_values(
        'Biweekly High Rate', ascending=False).head(20).plot.bar(stacked=False, ax=ax, color='darkorange')
    ax.set_title('Top 20 Grade by Mean Biweekly High Rate')
    

    相关文章

      网友评论

          本文标题:第二章:特征理解——我的数据集中有什么

          本文链接:https://www.haomeiwen.com/subject/fnejyctx.html