实验5 字典 2021-04-09

1. Anaconda Prompt窗口,运行

pip install -ihttps://pypi.tuna.tsinghua.edu.cn/simple requests_html

命令,以安装request_html包。

2. 在Anaconda Prompt窗口中,通过cd命令导航至代码文件夹,运行Jupyter Notebook命令启动Jupyter Notebook,新建代码文件‘实验5 字典.ipynb’。


from requests_html import HTMLSession

import json

import time, datetime

import pandas as pd

//在Python中,pandas是基于NumPy数组构建的,使数据预处理、清洗、分析工作变得更快更简单。pandas是专门为处理表格和混杂数据设计的,而NumPy更适合处理统一的数值数组数据。

import matplotlib.pyplot as plt//python数据可视化

%matplotlib inline//可以你的python console里面生成图像


#定义一个新会话

session=HTMLSession()

#定义网址

url ='https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start=0&limit=500'

#获取网址响应

r = session.get(url)


#得到json数据,含500部电影的信息

movies=json.loads(r.text)

len(movies)


#浏览前两部电影的信息

movies[:2]


#定义一个电影列表,里面存储感兴趣信息

movie_list=[]

for movie in movies:

    movie_id=movie['id']

    title=movie['title']

    score=float(movie['score'])

    regions=movie['regions']

    try:

        year,month,day=time.strptime(movie['release_date'],'%Y-%m-%d')[:3]

        date=datetime.date(year,month,day)

    except:

        year=time.strptime(movie['release_date'],'%Y')[0]

        date=datetime.date(year,1,1)

    actors=movie['actors']

    movie_list.append([movie_id,title,score,regions,date,actors])


#转换成pandas格式以便于用表格方式显示电影信息

data=pd.DataFrame(movie_list)

data.columns=['id','名称','评分','地区','日期','演员']

#查看前5部电影的信息

data.head()


#统计排名前500喜剧电影都是哪里拍的

region_dict={}

for movie in movie_list:

    for region in movie[3]:

        if region not in region_dict:

            region_dict[region]=1

        else:

            region_dict[region]+=1


#构建列表并排序

region_list=[[region,region_dict[region]] for region in region_dict]

region_list.sort(key=lambda x:x[1],reverse=True)

region_list[:5]


#转换成pandas格式

data=pd.DataFrame(region_list)

data.columns=['地区','数量']

#显示前5个地区

data.head()


#把所有其它地区统计到一起

other_region_list=[x[1] for x in region_list[5:]]

other_count=sum(other_region_list)

#其它地区电影数量(注意总和应超过500)

other_count


final_result=region_list[0:5]+[['其它地区',other_count]]

final_result


x=[v[0] for v in final_result]

y=[v[1] for v in final_result]

plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签

plt.rcParams['axes.unicode_minus']=False#解决符号显示为方块的问题

plt.bar(x,y)


#统计排名前500喜剧电影的演员

actor_dict={}

for movie in movie_list:

    for actor in movie[5]:

        if actor not in actor_dict:

            actor_dict[actor]=1

        else:

            actor_dict[actor]+=1


#创建列表并排序

actor_dict=[[actor,actor_dict[actor]] for actor in actor_dict]

actor_dict.sort(key=lambda x:x[1],reverse=True)

actor_dict[:5]


data=pd.DataFrame(actor_dict)

data.columns=['演员','数量']

data.head()

你可能感兴趣的:(实验5 字典 2021-04-09)