【Python数据分析实战】豆瓣读书分析(含代码和数据集)

这篇具有很好参考价值的文章主要介绍了【Python数据分析实战】豆瓣读书分析(含代码和数据集)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

@[TOC]豆瓣

一.导入数据

数据集:
链接:douban.csv
提取码:pmls

#加载需要使用的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#读取数据
df=pd.read_csv(r'/PythonTest/Data/book_douban.csv',index_col=0)
#查看前十行
df.head(10)
```![在这里插入图片描述](https://img-blog.csdnimg.cn/eb27ca3a59a44089a587da9b2774fbf2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQ0hSTuaZqA==,size_20,color_FFFFFF,t_70,g_se,x_16)

```python
df.info()

【Python数据分析实战】豆瓣读书分析(含代码和数据集)

二.数据清洗

#重命名‘数’列为‘页数’
df=df.rename(columns={'数':'页数'})
#重置索引
df.reset_index(drop=True,inplace=True)
# 查看矩阵形状
df.shape
# 查看评分的统计信息
df.describe()

2.1清理null值

# 将’none‘转换为null
df.replace('None',np.nan,inplace=True)
# 查看缺失值情况
df.isnull().sum()
# 去除'ISBM'列
del df['ISBM']
# 去除指定列含有空值的行
df.dropna(axis=0,subset=['作者','出版社','出版时间','页数','价格','评分','评论数量'],
          how='any',inplace=True)
# 重置索引
df.reset_index(drop=True,inplace=True)
# 确认是否还有空值
df.isna().sum()

【Python数据分析实战】豆瓣读书分析(含代码和数据集)

2.2清洗出版时间列

从数据集中可以发现出版时间的数据格式多样,有1999,2012/12,1923-4,2019年六月,因此需要提取出其年份

# 为了便于统计,通过正则提取出版时间的年份
import re
df['出版时间']=df['出版时间'].str.replace(' ','')
for index,row in df.iterrows():
    num=re.findall('\d+',row[3])
    num=''.join(num)[0:4]
    df.iloc[index,3]=num
# 将出版时间转换为整数型
df.drop(df[df['出版时间'].str.len()!=4].index,axis=0,inplace=True)
df['出版时间']=df['出版时间'].astype(np.int32)
# 发现出版时间超出实际时间的数据,将其清除
df.drop(df[df['出版时间']>2019].index,inplace=True)    

【Python数据分析实战】豆瓣读书分析(含代码和数据集)

2.3转换评分及平均数量的数据类型

# 转换数据类型
df['评分']=df['评分'].astype(float)
df['评论数量']=df['评论数量'].astype(np.int32)

2.4清洗页数列

# 查看页数是否含有小数点的情况
df['页数'].str.contains('\.').value_counts()

结果:
False 46173
True 7
Name: 页数, dtype: int64

# 规范页数的格式,去除含有其他字符的数据比如‘.’
df['页数']=df['页数'].apply(lambda x:x.replace(',','').replace(' ',''))
df.drop(df[~(df['页数'].str.isdecimal())].index,axis=0,inplace=True)

# 转换页数的格式
df['页数']=df['页数'].astype(np.int32)
# # 清除页数为0的数据
df.drop((df[df['页数']==0]).index,inplace=True)

2.5清洗价格列

# 规范价格的格式,去除价格不是纯数字的数据
df['价格']=df['价格'].apply(lambda x:x.replace(',','').replace(' ',''))
for r_index,row in df.iterrows():
    if row[5].replace('.','').isdecimal()==False:
        df.drop(r_index,axis=0,inplace=True)
    elif row[5][-1].isdecimal()==False:
        df.drop(r_index,axis=0,inplace=True)
# 转换价格的格式
df['价格']=df['价格'].astype(float)
# 将价格低于1元的书籍去除
df.drop(df[df['价格']<1].index,inplace=True)

2.6去除书名重复的数据

# 查看此时重复的书名
df['书名'].value_counts()

【Python数据分析实战】豆瓣读书分析(含代码和数据集)

# 查看重复书名数量
df['书名'].duplicated().value_counts()

结果:
False 42813
True 2073
Name: 书名, dtype: int64

# 按照评论数量排名,然后去重,以保证数据可靠性
df=df.sort_values(by='评论数量',ascending=False)
df.reset_index(drop=True,inplace=True)

【Python数据分析实战】豆瓣读书分析(含代码和数据集)

# 对排序后的数据进行去重
df.drop_duplicates(subset='书名', keep='first',inplace=True)
df.reset_index(drop=True,inplace=True)
# 查看是否还有重复的数据
df['书名'].value_counts()
# 清理后的数据
df.to_excel(r'/PythonTest/Data/douban_book.xls',encoding='utf_8_sig')
df

【Python数据分析实战】豆瓣读书分析(含代码和数据集)

2.7哪个出版社的书籍评分较高?

# 先统计各出版社的出版作品数量
press=df['出版社'].value_counts()
press=pd.DataFrame(press)
press=press.reset_index().rename(columns={'index':'出版集团','出版社':'出版数量'})
press
# 将出版作品数量大于200的出版社名称提取到列表中
lst=press[press['出版数量']>200]['出版集团'].tolist()
# 将列表中的出版社的作品平均分计算出来,并按照降序排序
press_rank=df[df['出版社'].isin(lst)].groupby(by='出版社',as_index=False).agg(
    {'评分':np.mean}).sort_values(by='评分',ascending=False)
# 保存为excel
press_rank.to_excel(r'/PythonTest/Data/press_rank.xls',encoding='utf_8_sig')
press_rank

【Python数据分析实战】豆瓣读书分析(含代码和数据集)

2.8哪些书值得一读?

# 将评论数量大于50000的作品提取出来,并按照评分降序排序
sor=df[df['评论数量']>50000].sort_values(by='评分',ascending=False)
sor
# 计算评分列的平均值
df['评分'].mean()
# 加权总分 = (v ÷ (v+m)) × R + (m ÷ (v+m))
#-R :该电影的算数平均分 。 是用普通的方法计算出的平均分
# -v :该电影投票人数
# -m:进入排行需要的最小投票数
sor.eval('加权总分=(((评论数量/(评论数量+50000))*评分)+(50000/(评论数量+50000)))',inplace=True)
book_rank=sor.sort_values(by='加权总分',ascending=False).reset_index(drop=True).head(20)
# 保存为excel
book_rank.to_excel(r'/PythonTest/Data/book_rank.xls',encoding='utf_8_sig')
book_rank

【Python数据分析实战】豆瓣读书分析(含代码和数据集)

2.9作者排名(10部作品及以上)

# 先提取出评论数量大于100的作品
df1=df[df['评论数量']>100]
# 再提取出评分大于等于8的作品
df1=df1[df1['评分']>=8]
# 将过滤后的的作品按作者进行统计
writer=df1['作者'].value_counts()
writer=pd.DataFrame(writer)
writer.reset_index(inplace=True)
writer.rename(columns={'index':'作家','作者':'作品数量'},inplace=True)
writer

【Python数据分析实战】豆瓣读书分析(含代码和数据集)

# 提取出优秀作品数量大于等于10的作家
lst1=writer[writer['作品数量']>=10]['作家'].tolist()
# 求得每位作家的平均得分
writer_rank=df1[df1['作者'].isin(lst1)].groupby(by='作者',as_index=False).agg(
    {'评分':np.mean}).sort_values(by='评分',ascending=False).reset_index(drop=True).head(20)
# 保存为excel
writer_rank.to_excel(r'/PythonTest/Data/writer_rank.xls',encoding='utf_8_sig')
writer_rank

【Python数据分析实战】豆瓣读书分析(含代码和数据集)

三.数据分析与可视化

3.1各年作品出版数量折线图

【Python数据分析实战】豆瓣读书分析(含代码和数据集)

3.2各价位作品数量直方图

【Python数据分析实战】豆瓣读书分析(含代码和数据集)

3.3各出版社出版作品数量条形图&评分折线图

【Python数据分析实战】豆瓣读书分析(含代码和数据集)

3.4作者作品评分条形图

【Python数据分析实战】豆瓣读书分析(含代码和数据集)

3.5作品评分树状图

【Python数据分析实战】豆瓣读书分析(含代码和数据集)文章来源地址https://www.toymoban.com/news/detail-405693.html

到了这里,关于【Python数据分析实战】豆瓣读书分析(含代码和数据集)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Python的豆瓣电影数据分析可视化系统的设计与实现-可视化分析大屏

    收藏关注不迷路 本文拟采用Python技术和Django 搭建系统框架,后台使用MySQL数据库进行信息管理,设计开发基于python的豆瓣电影数据分析可视化系统。通过调研和分析,系统拥有管理员和用户两个角色,主要具备个人中心、电影管理、用户管理、系统管理等功能模块。将纸质管

    2024年02月03日
    浏览(47)
  • 20亿票房但不好看?Python分析《孤注一掷》豆瓣评论数据

    环境使用 Python 3.8 解释器 Pycharm 编辑器 所需模块 一. 数据来源分析: 明确需求: 采集的网站是什么? 采集的数据是什么? 评论相关数据 抓包分析相关数据来源 通过浏览器自带开发者工具进行抓包分析 重点 打开开发者工具: F12 或者 鼠标右键点击检查选择network 刷新网页: 让本网

    2024年02月09日
    浏览(38)
  • python 数据分析可视化实战 超全 附完整代码数据

    代码+数据:https://download.csdn.net/download/qq_38735017/87379914 1.1.1 异常值检测 ①将支付时间转为标准时间的过程中发生错误,经排查错误数据为‘2017/2/29’,后将其修改为‘2017/2/27’。 ②经检测发现部分订单应付金额与实付金额都为0,抹去这部分异常数据。 ③在检测过程中发现部

    2024年02月02日
    浏览(34)
  • 大数据可视化项目—基于Python豆瓣电影数据可视化分析系统的设计与实现

    本项目旨在通过对豆瓣电影数据进行综合分析与可视化展示,构建一个基于Python的大数据可视化系统。通过数据爬取收集、清洗、分析豆瓣电影数据,我们提供了一个全面的电影信息平台,为用户提供深入了解电影产业趋势、影片评价与演员表现的工具。项目的关键步骤包括

    2024年02月04日
    浏览(40)
  • 基于Python数据分析的详细讲解+实战(含代码)

    名字:阿玥的小东东 学习:Python、C/C++ 主页链接:阿玥的小东东的博客_CSDN博客-pythonc++高级知识,过年必备,C/C++知识讲解领域博主 目录 载入数据集 数据预处理 探索性数据分析

    2024年02月10日
    浏览(50)
  • 基于Python的海量豆瓣电影、数据获取、数据预处理、数据分析、可视化、大屏设计项目(含数据库)

    项目介绍 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主!!!!!!!!!! 本文基于Python的网络爬虫手段对豆瓣电影网站进行数据的抓取,通过合理的分析豆瓣网站的网页结构,并设计出规则来获取电影数据的JSON数据包,采用正态分布的延时措施

    2024年02月12日
    浏览(41)
  • 111个Python数据分析实战项目,代码已跑通,数据可下载

    这里整理了111个数据分析的案例,每一个都进行了严格的筛选,筛选标准如下: 1. 有干货:杜绝纯可视化、统计性分析,有一定比例的讲解性文字 2. 可跑通:所有代码均经过测试,(大概率)可以一键跑通(因为库包更新,或者链接有效性问题,或多或少会存在个别失效情

    2024年02月03日
    浏览(33)
  • 基于hadoop豆瓣电影数据分析

    《 Hadoop大数据技术 》测试 试题 题    目:          基于hadoop豆瓣电影数据分析                 学生姓名:                               学    号:                               学    院:                               专业班级:          

    2024年02月02日
    浏览(64)
  • 《消失的她》豆瓣短评数据分析

    最近爆火的电影《消失的她》你们有没有去看过呢?网上的人对这部电影众说纷纭,《消失的她》到底值不值得去看,相信本篇博客会给你答案。 在本篇博客中,我们将对电影《消失的她》的豆瓣短评数据进行分析,我们的目标是通过对评论数据的探索性数据分析(EDA),情

    2024年02月12日
    浏览(30)
  • 基于Hadoop的豆瓣影视数据分析

           网络电影平台拥有大量的影片库资源,每天数千万用户活跃在平台上,拥有数亿人次的用户点击试看、收藏等行为。在影视作品方面,更是拥有数万的影视作品形成作品库,如此庞大的数据资源库对于电影及电视剧流行趋势的把握有着极为重要的指引作用。通过设计

    2024年02月01日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包