qq_20564413 2023-07-04 16:54 采纳率: 18.8%
浏览 96
已结题

python 针对多个类别的变量如何画图 分类组合柱状图

请教python 针对多个类别的变量如何画图,下图是我想要的结果,最下方的图是我目前的样子,如何修改代码?

img

img

df_ct3=df2.groupby(["Station","GEN3_date","Location Result"])['Identifier'].count().unstack().fillna(0)
df_ct3["ratio"]=df_ct3["Bad"]/(df_ct3["Bad"]+df_ct3["Good"])
df_ct3copy=df_ct3.reset_index()
plt.figure(figsize=(12,6))
sns.barplot(x="GEN3_date",y="ratio",hue="Station", data=df_ct3copy)

img

  • 写回答

9条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-04 18:57
    关注
    获得3.85元问题酬金
    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/692773
    • 你也可以参考下这篇文章:Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法、如何查询某个函数&关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略
    • 同时,你还可以查看手册:python- 序列和其他类型的比较 中的内容
    • 除此之外, 这篇博客: Python实现音乐推荐系统【跟着迪哥学python】中的 取其中一部分数(按大小排好序的了,这些应该是比较重要的数据),作为我们的实验数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • #10W名用户的播放量占总体的比例
      total_play_count = sum(song_count_df.play_count)
      print ((float(play_count_df.head(n=100000).play_count.sum())/total_play_count)*100)
      play_count_subset = play_count_df.head(n=100000)
      
      40.8807280500655
      
      (float(song_count_df.head(n=30000).play_count.sum())/total_play_count)*100
      
      78.39315366645269
      
      song_count_subset = song_count_df.head(n=30000)
      

      前3W首歌的播放量占到了总体的78.39%
      现在已经有了这10W名忠实用户和3W首经典歌曲,接下来我们就要对原始数据集进行过滤清洗,说白了就是在原始数据集中剔除掉不包含这些用户以及歌曲的数据。

      取10W个用户,3W首歌

      user_subset = list(play_count_subset.user)
      song_subset = list(song_count_subset.song)
      

      过滤掉其他用户数据

      #读取原始数据集
      triplet_dataset = pd.read_csv(filepath_or_buffer=data_home+'train_triplets.txt',sep='\t', 
                                    header=None, names=['user','song','play_count'])
      #只保留有这10W名用户的数据,其余过滤掉
      triplet_dataset_sub = triplet_dataset[triplet_dataset.user.isin(user_subset) ]
      del(triplet_dataset)
      #只保留有这3W首歌曲的数据,其余也过滤掉
      triplet_dataset_sub_song = triplet_dataset_sub[triplet_dataset_sub.song.isin(song_subset)]
      del(triplet_dataset_sub)
      
      triplet_dataset_sub_song.to_csv(path_or_buf=data_home+'triplet_dataset_sub_song.csv', index=False)
      

      当前我们的数据量

      triplet_dataset_sub_song.shape
      
      (10774558, 3)
      

      数据样本个数此时只有原来的1/4不到,但是我们过滤掉的样本都是稀疏数据不利于建模,所以当拿到了数据之后对数据进行清洗和预处理工作还是非常有必要的,不单单提升计算的速度,还会影响最终的结果。

      triplet_dataset_sub_song.head(n=10)
      
      usersongplay_count
      498d6589314c0a9bcbca4fee0c93b14bc402363afeaSOADQPP12A67020C8212
      499d6589314c0a9bcbca4fee0c93b14bc402363afeaSOAFTRR12AF72A8D4D1
      500d6589314c0a9bcbca4fee0c93b14bc402363afeaSOANQFY12AB01832391
      501d6589314c0a9bcbca4fee0c93b14bc402363afeaSOAYATB12A6701FD501
      502d6589314c0a9bcbca4fee0c93b14bc402363afeaSOBOAFP12A8C131F367
      503d6589314c0a9bcbca4fee0c93b14bc402363afeaSOBONKR12A58A7A7E026
      504d6589314c0a9bcbca4fee0c93b14bc402363afeaSOBZZDU12A6310D8A37
      505d6589314c0a9bcbca4fee0c93b14bc402363afeaSOCAHRT12A8C13A1A45
      506d6589314c0a9bcbca4fee0c93b14bc402363afeaSODASIJ12A6D4F5D891
      507d6589314c0a9bcbca4fee0c93b14bc402363afeaSODEAWL12AB01870328
    • 您还可以看一下 CSDN就业班老师的Python爬虫技术和浏览器模拟,验证码识别视频教程课程中的 验证码信息识别小节, 巩固相关知识点
    评论

报告相同问题?

问题事件

  • 系统已结题 7月12日
  • 修改了问题 7月5日
  • 赞助了问题酬金20元 7月5日
  • 创建了问题 7月4日