当前位置:   article > 正文

数据分析基础之《pandas(8)—综合案例》

数据分析基础之《pandas(8)—综合案例》

一、需求

1、现在我们有一组从2006年到2016年1000部最流行的电影数据
数据来源:https://www.kaggle.com/damianpanek/sunday-eda/data

2、问题1
想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取?

3、问题2
对于这一组电影数据,如果我们想看Rating、Runtime (Minutes)的分布情况,应该如何呈现数据?

4、问题3
对于这一组电影数据,如果我们希望统计电影分类genre的情况,应该如何处理数据?

二、实现

1、问题1

  1. # 综合案例
  2. movie= pd.read_csv("./IMDB-Movie-Data.csv")
  3. movie
  4. # 想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取?
  5. # 评分的平均分
  6. movie["Rating"].mean()
  7. # 导演的人数信息
  8. np.unique(movie["Director"]).size

2、问题2

  1. # 对于这一组电影数据,如果我们想看Rating、Runtime (Minutes)的分布情况,应该如何呈现数据?
  2. import matplotlib.pyplot as plt
  3. # 创建画布
  4. plt.figure(figsize=(20,8), dpi=100)
  5. # 绘制直方图
  6. plt.hist(movie["Rating"], 20)
  7. # 修改刻度
  8. max_ = movie["Rating"].max()
  9. min_ = movie["Rating"].min()
  10. plt.xticks(np.linspace(max_, min_, num=21))
  11. # 添加网格
  12. plt.grid(linestyle="--", alpha=0.8)
  13. # 显示图像
  14. plt.show()

3、问题3
思路分析:
(1)创建一个temp_df,全为0的dataframe,列索引值为电影的分类
(2)遍历每一部电影,temp_df中把分类出现的列的值置为1
(3)求和

  1. # 对于这一组电影数据,如果我们希望统计电影分类genre的情况,应该如何处理数据?
  2. # 先统计电影类别都有哪些
  3. movie_genre = [i.split(",") for i in movie["Genre"]]
  4. movie_genre
  5. # 拆分
  6. movie_class = np.unique([j for i in movie_genre for j in i])
  7. movie_class
  8. # 统计每个电影有几个类别
  9. count = pd.DataFrame(np.zeros(shape=[1000, 20], dtype="int32"), columns=movie_class)
  10. count
  11. for i in range(1000):
  12. count.loc[i, movie_genre[i]] = 1
  13. count
  14. count.sum(axis=0).sort_values(ascending=False).plot(kind="bar", figsize=(20, 8), fontsize=20, colormap="cool")

三、小结
pandas高级数据处理
    缺失值处理
        缺失值是NaN类型
            判断是否存在np.nan缺失值
                pd.isnull(df).any()
                pd.notnull(df).all()
            两种思路
                删除df.dropna()
                替换sr.fillna(value, replace=)
        缺失值是其他默认符号
            替换df.replace(to_replace="?", value=np.nan)
            按照处理nan的步骤
    数据离散化
        分组
            自动分组pd.qcut(data, bins)
            自定义分组pd.cut(data, bins)
        转换
            pd.get_dummies(分好组的数据, prefix=)
    数据合并
        按方向合并
            pd.concat((a,b), axis=)
        按索引合并
            pd.merge(left, right, how="inner", on=)
    交叉表与透视表
        pd.crosstab(value1, value2)
        df.pivot_table([字段], index=)
    分组与聚合
        用dataframe.groupby(by=).聚合函数()
        用sr.groupby(sr).聚合函数()
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/79842
推荐阅读
相关标签
  

闽ICP备14008679号