python数据分析案例源代码,python数据分析案例教程

大家好,小编来为大家解答以下问题,python数据分析案例 药店销售数据分析,python数据分析案例大作业百度网盘,现在让我们一起来看看吧!

1.MoviesLens 1M数据集

        1.1数据简介:

        GroupLens实验室提供了一些从MoviesLens用户那里收集的20世纪90年代末到21世纪初的电影评分数据的集合。浙西额数据提供了电影的评分、流派、年份和观众数据(年龄、邮编、性别、职业)python简单新年祝福代码
        MovisLens1M数据集包含6000个用户对4000部电影的100万个评分。数据分布在三个表格之中:分别包含评分、用户信息和电影信息。

        1.2代码(我是anaconda和jupyter两个软件联合进行的编码)

        1.2.1python包的引用

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import matplotlib
%matplotlib inline #在jupyter notebook中需要这一行,在pycharm中不需要

        这是我在数据分析的过程中所运用到的python包。

        1.2.2数据的调入

        

unames = ["user_id", "gender", "age", "occupation", "zip"]
users = pd.read_table("datasets/movielens/users.dat", sep="::",
                      header=None, names=unames, engine="python")

rnames = ["user_id", "movie_id", "rating", "timestamp"]
ratings = pd.read_table("datasets/movielens/ratings.dat", sep="::",
                        header=None, names=rnames, engine="python")

mnames = ["movie_id", "title", "genres"]
movies = pd.read_table("datasets/movielens/movies.dat", sep="::",
                       header=None, names=mnames, engine="python")

             

 使用pandas库中的pd.read_table()函数从MovieLens数据集的三个文件中读取数据。这些文件包括users.datratings.datmovies.dat

1.2.3数据的处理

users.head(5)
ratings.head(5)
movies.head(5)
ratings #jupyter notebook 不用print也能有图像

可以使用head()函数来查看数据框的前几行。

                

data = pd.merge(pd.merge(ratings, users), movies)
data
data.iloc[0]

这段代码将合并ratingsusersmovies三个数据框,并将结果存储在data变量中。通过打印data,您可以查看合并后的数据框的内容。要访问data中的特定行,可以使用.iloc[]方法。

        

        

mean_ratings = data.pivot_table("rating", index="title",
                        columns="gender", aggfunc="mean")
mean_ratings.head(5)

在使用pivot_table()函数计算基于性别的电影评分的平均值,

pivot_table()函数用于创建一个透视表,其中"rating"列作为值,"title"列作为行索引,"gender"列作为列索引,并使用"mean"聚合函数计算平均值。

通过打印mean_ratings.head(5),您可以查看计算得到的透视表的前5行,其中显示了每个电影标题的不同性别的平均评分。

                                

ratings_by_title = data.groupby("title").size()
ratings_by_title.head()
active_titles = ratings_by_title.index[ratings_by_title >= 250]
active_titles
  1. 使用groupby()函数对data数据框按照电影标题("title")进行分组,并使用size()函数计算每个电影标题的出现次数。
  2. 使用.head()方法打印出计算得到的分组结果的前几行。
  3. 使用ratings_by_title >= 250来创建一个布尔索引,筛选出评分次数至少为250次的电影标题。然后,使用.index属性获取这些电影标题的索引,并将结果存储在active_titles变量中。通过打印active_titles,您可以查看筛选得到的活跃电影标题。

mean_ratings = mean_ratings.loc[active_titles]
mean_ratings

这段代码使用.loc[]索引器根据活跃电影标题的索引,从mean_ratings数据框中选择相应的行。

通过打印mean_ratings,您将得到筛选后的mean_ratings数据框,其中只包含活跃电影标题,并显示了每个电影标题的不同性别的平均评分。

                        

mean_ratings = mean_ratings.rename(index={"Seven Samurai (The Magnificent Seven) (Shichinin no samurai) (1954)":
                           "Seven Samurai (Shichinin no samurai) (1954)"})

top_female_ratings = mean_ratings.sort_values("F", ascending=False)
top_female_ratings.head()

                 

.rename()方法用于重命名索引,将"Seven Samurai (The Magnificent Seven) (Shichinin no samurai) (1954)"修改为"Seven Samurai (Shichinin no samurai) (1954)",以便更好地匹配索引值。

然后,使用.sort_values()方法按照女性评分("F")对mean_ratings数据框进行降序排序,并将结果存储在top_female_ratings变量中。

通过打印top_female_ratings.head(),您可以查看按照女性评分排序后的前几行数据,这些行显示了女性对电影的评分情况。

               

mean_ratings["diff"] = mean_ratings["M"] - mean_ratings["F"]

sorted_by_diff = mean_ratings.sort_values("diff")
sorted_by_diff.head()

通过计算男性评分("M")与女性评分("F")之间的差异,创建了一个新的名为"diff"的列,并将结果存储在mean_ratings数据框中。

然后,使用.sort_values()方法按照"diff"列的值对mean_ratings数据框进行排序,并将结果存储在sorted_by_diff变量中。

通过打印sorted_by_diff.head(),您可以查看按照差异值排序后的前几行数据,这些行显示了男性评分与女性评分之间差异最大的电影。

                                

sorted_by_diff[::-1].head()

在这段代码中,[::-1]用于对sorted_by_diff数据框进行逆序操作,即将数据框的行顺序反转。

通过打印sorted_by_diff[::-1].head(),您将得到逆序后的前几行数据,这些行显示了女性评分高于男性评分的电影。

        

rating_std_by_title = data.groupby("title")["rating"].std()
rating_std_by_title = rating_std_by_title.loc[active_titles]
rating_std_by_title.head()

,首先使用groupby()函数对data数据框按照电影标题("title")进行分组,并计算每个电影标题的评分("rating")的标准差,将结果存储在rating_std_by_title变量中。

然后,使用.loc[]索引器根据活跃电影标题的索引,从rating_std_by_title中选择相应的行。

通过打印rating_std_by_title.head(),您可以查看计算得到的活跃电影标题的评分标准差的前几行数据。

                ​​​​​​​       

rating_std_by_title.sort_values(ascending=False)[:10]

.sort_values()方法用于按照评分标准差进行降序排序。

通过打印rating_std_by_title.sort_values(ascending=False)[:10],您将得到按照评分标准差降序排序的前10个电影,这些电影具有最高的评分标准差。

        ​​​​​​​        ​​​​​​​        

movies["genres"].head()
movies["genres"].head().str.split("|")
movies["genre"] = movies.pop("genres").str.split("|")
movies.head()

首先通过movies["genres"].head()打印出"genres"列的前几行数据,以便查看原始数据。

接下来,使用.str.split("|")将"genres"列中的每个元素按照"|"进行拆分,返回一个包含拆分后结果的Series对象。

然后,使用movies["genre"] = movies.pop("genres").str.split("|")将拆分后的结果存储到一个新的列"genre"中,并从原始数据框中删除"genres"列。

最后,通过打印movies.head(),您将得到包含新的"genre"列的数据框,显示了每个电影的多个分类。

        ​​​​​​​        

movies_exploded = movies.explode("genre")
movies_exploded[:10]

使用.explode()方法对"genre"列进行展开操作,将每个电影的每个分类单独显示。展开后的结果存储在新的数据框movies_exploded中。

通过打印movies_exploded[:10],您将得到展开后的前10行数据,每行显示一个电影的一个分类。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值