b站学python_在b站视频学python数据分析

源视频传送门【python教程】数据分析——numpy、pandas、matplotlib_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.comv2-5e8757d615fe682563cb75e805fe12e8_180x120.jpg

基础视频看完后决定换个学习方法,看了视频开始的问题,然后开始自己捣腾。

问题:对于一组电影数据,了解rating和runtime的分布情况。

导入数据后,先查看数据格式:

df = pd.read_csv("IMDB-Movie-Data.csv")

print(df.head(1))

然而pycharm并没有给出想要的结果

要找的两项都被隐藏了orz,解决方法

>>加入显示设置

pd.set_option("display.max_columns", 30) # 30可以设置更大

>>可以直接打印列名

print(df.columns.values)

之后处理就和作者不同了,我选择切片后直接作图

df = df[["Rating", "Runtime (Minutes)"]]

df = df.sort_values(by="Rating", ascending=False)

print(df.head(5), '\n', df.tail(5)) # 查看数据信息最高9.0分,最低1.9分

粗略查看数据信息后,导入matplotlib,分为20组做直方图。

df_Time = df["Runtime (Minutes)"]

plt.hist(df_Time, 20)

plt.title("Runtime distribution")

plt.xticks()

plt.ylabel("Counts")

plt.xlabel("Runtime")

plt.show()

作者的处理:先将该行数据值全部取出

runtime_data = df["Runtime (Minutes)"].values # 以字符串形式取出某一列值

之后类似地将数据导入作图,不过作者设置固定间距分组,同时调整了x轴坐标。

num_bin = (max_runtime - min_runtime)//6

plt.figure(figsize=(10, 6), dpi=80)

plt.hist(runtime_data, num_bin)

plt.title("Runtime distribution", fontsize=25)

plt.ylabel("Counts", fontsize=15)

plt.xlabel("Runtime", fontsize=15)

plt.xticks(range(min_runtime, max_runtime+6, 6))

plt.show()

结果显示为

但都存在一个问题,x轴显示与直方图不同步。

打印max_runtime、min_runtime分别为 191、 66,差值125刚好被5整除,则间距设置为5。

num_bin = (max_runtime - min_runtime)//5

完美显示!

但求知欲满满的我怎会就此满足,如果间距不是刚好被整除呢?

接下来Rating排序就遇到了这个问题,Rating最大值和最小值为9.0和1.9,怎么都不能被整除!

作者在一通操作后,搬出来一句万用句子,等到下次再来讨论这个问题。

不甘心的我一番搜索之后,终于解决了这个办法,按照组距设置x轴坐标即可

Rating = df["Rating"].values

max, min = Rating.max(), Rating.min()

bins = int((max - min) // 0.5)

class_interval = (max - min)/bins

plt.figure(figsize=(20, 8), dpi=60)

x_ticks = [1.9 + class_interval*i for i in range(bins+1)] # 按照组距设置x轴坐标

plt.xticks(x_ticks, fontsize=15)

plt.title("Movie Rating distribution", fontsize=25)

plt.xlabel("Rating", fontsize=20)

plt.ylabel("Counts", fontsize=20)

plt.grid()

plt.hist(Rating, bins, rwidth=1)

plt.show()

可以看出坐标线和直方图完美契合。x轴坐标自动取小数显示,实际是分数。

至此,直方图绘制完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值