python基础第七课

1.Python中的生成表达式

列表推导式
格式[表达式for 临时变量 in 可迭代对象[条件语句]]
用途:快速生成一个列表

#回顾:使用普通for循环创建列表
li = []
for i in range(10):
    li.append(i)
print(li)
#列表推导式
li2 = [i for i in range(10)]
print(li2)

练习:生成一个列表['序号:998', '序号:992' ]共10个元素

from random import randint
li = []
for i in range(10):
    seq = '序号:{}'.format(randint(100, 999))
    li.append(seq)
print(li)
#列表推导式
li2 = ['序号:{}'.format(randint(100, 999)) for i in range(10)]
print(li2)

练习:使用列表推导式生成一个含有10个元素的随即列表[ ]并删选出所有偶数

li = []
for _ in range(10):
    li.append(randint(30, 100))
print(li)
result = []
for i in li:
    if i%2 == 0:
        result.append(i)
    else:
        continue
print(result)
li2 = [ i for i in li if i%2 == 0]
print(li2)

练习:使用列表推导式生成一个含有20个元素的随即列表[ ]并删选出所有奇数

li = []
for _ in range(20):
    li.append(randint(1, 100))
print(li)
result = []
for i in li:
    if i%2 != 0:
        result.append(i)
print(result)
li2 = [ i for i in li if  i%2 != 0]
print(li2)

回顾豆瓣电影案例并优化,增加爬取电影图片保存本地功能

import requests
from lxml import html
import pandas as pd
from xpinyin import Pinyin
def spider(city, movie_list = []):
    city_pinyin = Pinyin().get_pinyin(city, splitter = '')
    url = 'https://movie.douban.com/cinema/later/{}/'.format(city_pinyin)
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"}
    html_data = requests.get(url, headers = headers).text
    selector = html.fromstring(html_data)
    ul_list = selector.xpath('//div[@id="showing-soon"]/div')
    print('{}市将有{}部电影即将上映'.format(city, len(ul_list)))
    ####################################################
    #添加相应电影图片链接地址
    for div in ul_list:
        name = div.xpath('div/h3/a/text()')
        date = div.xpath('div/ul/li[1]/text()')
        style = div.xpath('div/ul/li[2]/text()')
        country = div.xpath('div/ul/li[3]/text()')
        want = div.xpath('div/ul/li[4]/span/text()')
        photo = div.xpath('a/img/@src')
        movie_list.append({
            "name": name[0],
            "date": date[0],
            "style": style[0],
            "country": country[0],
            "want": want[0].replace('人想看', ''),
            "photo": photo[0]
        })

        movie = movie_list.sort(key=lambda x: int(x["want"]), reverse=True)
    for movie in movie_list:
        print(movie)
        img_link = movie['photo']
        response = requests.get(img_link)
        if response.status_code == 200:
            with open('{}.jpg'.format(movie['name']), 'wb') as f:
                f.write(response.content)
    df = pd.DataFrame(movie_list)
    df.to_csv("即将上映电影想看人数排行.csv")

if __name__ == '__main__':
    city = input('请输入城市民名称')
    spider(city)
增加图片链接后.png
爬取的电影图片.png
2.数据可视化

安装 matplotlib库

from matplotlib import pyplot as plt
import numpy as np
#绘制正弦曲线
#选取100个等边距的点(x,y),然后进行绘制曲线
#生成[0,2π]区间100个等间距的点
x = np.linspace(0, 2*np.pi, num = 100)
#print(x)
y = np.sin(x)
plt.plot(x, y)
plt.show()
正弦曲线.png

支持中文显示设置

plt.rcParams["font.sans-serif"] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

曲线的显示设置

x = np.linspace(0, 2*np.pi, num = 100)
#print(x)
y = np.sin(x)
z = np.cos(x)
plt.plot(x, y,
         'p',#颜色
         linestyle =':',#风格
         # - 实线, -- 虚线, :点画线
         marker = 'o',#标记点的样式
         # o 实心圆, * 星, + 加号
         markerfacecolor = 'r',#标记点的颜色
         alpha = 0.8,#透明度
         label = 'sin(x)'
         )
plt.plot(x, z, marker = 'o', label = 'cos(x)')
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('标题')
plt.legend()#设置图例
plt.show()
曲线图.png

绘制条形图

from random import randint
x = ['口红{}'.format(i) for i in range(1, 7)]
#print(x)
y = [randint(200, 1000) for _ in range(6)]
plt.bar(x, y)
plt.grid()#背景表格
plt.xlabel('口红品牌')
plt.ylabel('口红价格(元)')
plt.title('口红价格表')
plt.show()
条形图.png

作业:

  • 三国人物分析top10绘制条形图
#承接三国人物出现频率top10分析代码
#显示出现词语前10部分修改为
    role_list, y, x = [], [], []
    for i in range(10):
        role, count = items[i]
        y.append(count)
        x.append(role)
        for _ in range(count):
            role_list.append(role)
    plt.bar(x, y, color='purple')
    plt.grid()
    plt.xlabel('三国人物')
    plt.ylabel('出场频次')
    plt.title('三国人物出现次数top10')
    plt.show()
三国人物分析top10绘制条形图.png
  • 三国人物分析top10绘制饼图
    explode = [0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    plt.pie(y, labels=x, explode=explode, startangle=90,shadow=True, autopct='%.1f%%')
    plt.title('三国人物出现次数top10')
    plt.show()
fe8129167b7cba7db0bf50568311cb7.png
  • 豆瓣中最想看的即将上映电影top5条形图
#承接豆瓣爬虫代码
    x = [movie['movie_name'] for movie in movie_info_list[:5]]
    y = [movie['want_see'] for movie in movie_info_list[:5]]
   # 绘制柱状图
    plt.bar(x, y, color = 'purple')
    plt.xlabel('电影名')
    plt.ylabel('想看人数')
    plt.title('豆瓣即将上映电影想看人数TOP5')
    plt.grid()
    plt.show()
    # 绘制水平柱状图
    plt.barh(x, y, color = 'purple')
    plt.xlabel('想看人数')
    plt.ylabel('电影名')
    plt.grid()
    plt.title('豆瓣即将上映电影想看人数TOP5')
    plt.show()

豆瓣中最想看的即将上映电影top5条形图.png
豆瓣中最想看的即将上映电影top5条形图.png
  • 豆瓣中最想看的即将上映电影top5饼图
    explode = [0.2, 0, 0, 0, 0]
    plt.pie(y,
            labels=x,
            explode=explode,
            startangle=90,
            shadow=True,
            autopct='%.1f%%')
    plt.title('豆瓣即将上映电影想看人数TOP5')
    plt.show()

豆瓣中最想看的即将上映电影top5.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容