python动手学数据分析task04数据可视化

第二章数据可视化

可视化展示泰坦尼克号数据集中男女中生存人数分布情况

任务二:可视化展示泰坦尼克号数据集中男女生存人数分布情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
死亡人数的得出

在这里插入图片描述
旋转一下unstack将行旋转为列
stack将列旋转为行

在这里插入图片描述
生存人数和死亡人数的比例图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
plot默认是折线图
在这里插入图片描述

不同票价中生存与死亡人数

排序之后
sort_values(ascending=False)

text.groupby(['Fare'])['Survived'].value_counts().sort_values(ascending=False)

在这里插入图片描述
value_counts()
在这里插入图片描述

排序之前
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
任务六不同年龄的人生存和死亡人数分布情况

bins参数用来分段
hist画直方图
alpha设置透明度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
legend((0,1))设置标注

根据分布密度画图
在这里插入图片描述
加一个密度曲线
在这里插入图片描述

不同仓位等级的年龄分布情况
在这里插入图片描述
在这里插入图片描述
换一个库来写
在这里插入图片描述
kdeplot函数来画图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

pyecharts

柱状图Bar
from pyecharts import Bar

//导入柱状图-Bar
from pyecharts import Bar
//设置行名
columns = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
//设置数据
data1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
data2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
//设置柱状图的主标题与副标题
bar = Bar("柱状图", "一年的降水量与蒸发量")
//添加柱状图的数据及配置项
bar.add("降水量", columns, data1, mark_line=["average"], mark_point=["max", "min"])
bar.add("蒸发量", columns, data2, mark_line=["average"], mark_point=["max", "min"])
//生成本地文件(默认为.html文件)
bar.render()

在这里插入图片描述
在这里插入图片描述

饼图
from pyecharts import Pie

//导入饼图Pie
from pyecharts import Pie
//设置主标题与副标题,标题设置居中,设置宽度为900
pie = Pie("饼状图", "一年的降水量与蒸发量",title_pos='center',width=900)
//加入数据,设置坐标位置为【25,50】,上方的colums选项取消显示
pie.add("降水量", columns, data1 ,center=[25,50],is_legend_show=False)
//加入数据,设置坐标位置为【75,50】,上方的colums选项取消显示,显示label标签
pie.add("蒸发量", columns, data2 ,center=[75,50],is_legend_show=False,is_label_show=True)
//保存图表
pie.render()

在这里插入图片描述
在这里插入图片描述

箱体图
from pyecharts import Boxplot

//导入箱型图Boxplot
from pyecharts import Boxplot 
boxplot = Boxplot("箱形图", "一年的降水量与蒸发量")
x_axis = ['降水量','蒸发量']
y_axis = [data1,data2]
//prepare_data方法可以将数据转为嵌套的 [min, Q1, median (or Q2), Q3, max]
yaxis = boxplot.prepare_data(y_axis)       
boxplot.add("天气统计", x_axis, _yaxis)
boxplot.render()

折线图
from pyecharts.charts import Line

在这里插入图片描述

雷达图
from pyecharts.charts import Rader

from pyecharts import Radar
radar = Radar("雷达图", "一年的降水量与蒸发量")
//由于雷达图传入的数据得为多维数据,所以这里需要做一下处理
radar_data1 = [[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]]
radar_data2 = [[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]]
//设置column的最大值,为了雷达图更为直观,这里的月份最大值设置有所不同
schema = [ 
    ("Jan", 5), ("Feb",10), ("Mar", 10),
    ("Apr", 50), ("May", 50), ("Jun", 200),
    ("Jul", 200), ("Aug", 200), ("Sep", 50),
    ("Oct", 50), ("Nov", 10), ("Dec", 5)
]
//传入坐标
radar.config(schema)
radar.add("降水量",radar_data1)
//一般默认为同一种颜色,这里为了便于区分,需要设置item的颜色
radar.add("蒸发量",radar_data2,item_color="#1C86EE")
radar.render()

散点图scatter

from pyecharts import Scatter
scatter = Scatter("散点图", "一年的降水量与蒸发量")
//xais_name是设置横坐标名称,这里由于显示问题,还需要将y轴名称与y轴的距离进行设置
scatter.add("降水量与蒸发量的散点分布", data1,data2,xaxis_name="降水量",yaxis_name="蒸发量",
            yaxis_name_gap=40)
scatter.render()

图表布局Grid

//设置折线图标题位置
line = Line("折线图","一年的降水量与蒸发量",title_top="45%")
line.add("降水量", columns, data1, is_label_show=True)
line.add("蒸发量", columns, data2, is_label_show=True)
grid = Grid()
//设置两个图表的相对位置
grid.add(bar, grid_bottom="60%")
grid.add(line, grid_top="60%")
grid.render()

合并

from pyecharts import Overlap
overlap = Overlap()
bar = Bar("柱状图-折线图合并", "一年的降水量与蒸发量")
bar.add("降水量", columns, data1, mark_point=["max", "min"])
bar.add("蒸发量", columns, data2, mark_point=["max", "min"])
overlap.add(bar)
overlap.add(line)
overlap.render()

漏斗图

from pyecharts.charts import Funnel
from pyecharts import options as opts

# 示例数据
cate = ['访问', '注册', '加入购物车', '提交订单', '付款成功']
data = [30398, 15230, 10045, 8109, 5698]

"""
漏斗图示例:
1. sort_控制排序,默认降序;
2. 标签显示位置
"""
funnel = (Funnel()
          .add("用户数", [list(z) for z in zip(cate, data)], 
               sort_='ascending',
               label_opts=opts.LabelOpts(position="inside"))
          .set_global_opts(title_opts=opts.TitleOpts(title="Funnel-基本示例", subtitle="我是副标题"))
         )

funnel.render_notebook()

在这里插入图片描述

热力图

from pyecharts.charts import HeatMap
from pyecharts import options as opts
from pyecharts.faker import Faker
import random

# 示例数据
data = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)]

heat = (HeatMap()
        .add_xaxis(Faker.clock)
        .add_yaxis("访客数", 
                   Faker.week, 
                   data,
                   label_opts=opts.LabelOpts(is_show=True, position="inside"))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="HeatMap-基本示例", subtitle="我是副标题"),
            visualmap_opts=opts.VisualMapOpts(),
            legend_opts=opts.LegendOpts(is_show=False))
       )

heat.render_notebook()

在这里插入图片描述

日历图

datetime_date设置日期
datetime_timedelta
random.randint()
获得随机数

from pyecharts.charts import Calendar
from pyecharts import options as opts
import random
import datetime

# 示例数据
begin = datetime.date(2019, 1, 1)
end = datetime.date(2019, 12, 31)
data = [[str(begin + datetime.timedelta(days=i)), random.randint(1000, 25000)]
        for i in range((end - begin).days + 1)]

"""
日历图示例:
"""
calendar = (
        Calendar()
        .add("微信步数", data, calendar_opts=opts.CalendarOpts(range_="2019"))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Calendar-基本示例", subtitle="我是副标题"),
            legend_opts=opts.LegendOpts(is_show=False),
            visualmap_opts=opts.VisualMapOpts(
                max_=25000,
                min_=1000,
                orient="horizontal",
                is_piecewise=True,
                pos_top="230px",
                pos_left="100px",
            )
        )
    )

calendar.render_notebook()

visualmap_opts=opts.VisualMapOpts()
/设置选项图像的
在这里插入图片描述

地理系图表

from pyecharts import options as opts
from pyecharts.charts import Map
import random

province = ['广东', '湖北', '湖南', '四川', '重庆', '黑龙江', '浙江', '山西', '河北', '安徽', '河南', '山东', '西藏']
data = [(i, random.randint(50, 150)) for i in province]

_map = (
        Map()
        .add("销售额", data, "china")
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Map-基本示例"),
            legend_opts=opts.LegendOpts(is_show=False),
            visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True),
        )
    )

_map.render_notebook()

在这里插入图片描述

地理热点图

from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType
import random

province = ['武汉', '十堰', '鄂州', '宜昌', '荆州', '孝感', '黄石', '咸宁', '仙桃']
data = [(i, random.randint(50, 150)) for i in province]

geo = (Geo()
        .add_schema(maptype="湖北")
        .add("门店数", data,
            type_=ChartType.HEATMAP)
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            visualmap_opts=opts.VisualMapOpts(),
            legend_opts=opts.LegendOpts(is_show=False),
            title_opts=opts.TitleOpts(title="Geo-湖北热力地图"))
      )

geo.render_notebook()

在这里插入图片描述

3D散点图
Scatter3D
faker 此时我们应该使用Faker这个Python库,用它来生成各种各样的伪数据

Faker生成伪数据

from pyecharts import options as opts
from pyecharts.charts import Scatter3D
from pyecharts.faker import Faker
import random


data = [[random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)]
        for _ in range(1000)]

scatter3D = (Scatter3D()
             .add("", data)
             .set_global_opts(
                 title_opts=opts.TitleOpts("Scatter3D-基本示例"),
                 visualmap_opts=opts.VisualMapOpts(range_color=Faker.visual_color))
            )

scatter3D.render_notebook()

在这里插入图片描述

航线图

from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType, ThemeType
import requests

r = requests.get('https://echarts.baidu.com/examples/data-gl/asset/data/flights.json')
data = r.json()

city = ['Beijing']
airports_code = []

geo = Geo(init_opts=opts.InitOpts(theme=ThemeType.DARK))
for i, airport in enumerate(data['airports']):
    if airport[1] in city:
        geo.add_coordinate(i, airport[3], airport[4])
        airports_code.append(i)

route = [(x, y) for _, x, y in data['routes'] if x in airports_code]


geo.add_schema(maptype="world",
                itemstyle_opts=opts.ItemStyleOpts())
geo.add("geo", route, 
        is_large = True,
        symbol_size=0,
        type_='lines',
        is_polyline=True,
        effect_opts=opts.EffectOpts(symbol='pin', symbol_size=1, trail_length=1, color="rgba(255,69,0,0.9)"),
        linestyle_opts=opts.LineStyleOpts(curve=0.2, width=0.2, color='rgb(245,245,245)',opacity=0.05)
       )
geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
geo.set_global_opts(title_opts=opts.TitleOpts(title="北京发出所有航线"),
                   legend_opts=opts.LegendOpts(is_show=False))


geo.render_notebook()

时间轴

from pyecharts import options as opts
from pyecharts.charts import Bar, Timeline
from pyecharts.globals import ThemeType
import random

# 示例数据
cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']

tl = Timeline()
for i in range(2015, 2020):
    bar = (
        Bar()
        .add_xaxis(cate)
        .add_yaxis("线上", [random.randint(50, 150) for _ in cate])
        .add_yaxis("门店", [random.randint(100, 200) for _ in cate])
        .set_global_opts(title_opts=opts.TitleOpts("手机品牌{}年营业额".format(i)))
    )
    tl.add(bar, "{}年".format(i))
    
tl.render_notebook()

组合图

from pyecharts import options as opts
from pyecharts.charts import Map, Bar, Grid
from pyecharts.globals import ChartType, ThemeType
import random

province = ['武汉', '十堰', '鄂州', '宜昌', '荆州', '孝感', '黄石', '咸宁', '仙桃']
data = [324, 125, 145, 216, 241, 244, 156, 278, 169]

bar = (Bar()
       .add_xaxis(province)
       .add_yaxis('营业额', data)
       .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
       .set_global_opts(
            title_opts=opts.TitleOpts(title="Grid-Bar")
        )
      )

line = (Line()
       .add_xaxis(province)
       .add_yaxis('营业额', data, 
                  markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]))
       .set_global_opts(title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"))
      )

grid = (
        Grid()
        .add(bar, grid_opts=opts.GridOpts(pos_bottom="60%"))
        .add(line, grid_opts=opts.GridOpts(pos_top="60%"))
    )

grid.render_notebook()

bokeh交互式可视化库

bokeh.models

为应用程序开发人员提供的最灵活的一个底层接口。

bokeh.plotting

以构成可视符号为中心的一个高层接口

安装Bokeh有多种方式,我们推荐使用Anaconda Python distribution,并在Bash或Windows命令提示符下输入以下命令:

conda install bokeh

fake库是怎么使用的

from fake import Faker
fake = Faker(local=‘zh_CN’)

from faker.providers import BaseProvider

元旦前发布的这篇文章,由于工作需要,元旦期间创建伪数据的过程中,发现一个很有意思的问题。不同的文化类之间,方法是偶然有区别的。

比如,在中文(zh_CN)中的方法,district()#获取区 province()#获取省的方法,在有些包里是没有的,这需要根据所使用文化类的国家特制来。
在这里插入图片描述

f https://blog.csdn.net/qq_41703291/article/details/87898556

随机生成指定类型数据:

pybool():

pydecimal():

pydict():

pyfloat():left_digits=5 #生成的整数位数,

              right_digits=2 #生成的小数位数,

              positive=True #是否只有正数

pyint():

pyiterable()

pylist()

pyset()

pystr()

pystruct()

pytuple()

ssn():生成身份证号

chrome():随机生成Chrome的浏览器user_agent信息

firefox():随机生成FireFox的浏览器user_agent信息

internet_explorer():随机生成IE的浏览器user_agent信息

opera():随机生成Opera的浏览器user_agent信息

safari():随机生成Safari的浏览器user_agent信息

linux_platform_token():随机Linux信息

user_agent():随机user_agent信息
fooh

Fake库常用方法

4.常用方法一览

city_suffix():市,县

country():国家

country_code():国家编码

district():区

geo_coordinate():地理坐标

latitude():地理坐标(纬度)

longitude():地理坐标(经度)

lexify():替换所有问号(“?”)带有随机字母的事件。

numerify():三位随机数字

postcode():邮编

province():省份

street_address():街道地址

street_name():街道名

street_suffix():街、路

random_digit():0~9随机数

random_digit_not_null():1~9的随机数

random_element():随机字母

random_int():随机数字,默认0~9999,可以通过设置min,max来设置

random_letter():随机字母

random_number():随机数字,参数digits设置生成的数字位数

color_name():随机颜色名

hex_color():随机HEX颜色

rgb_color():随机RGB颜色

safe_color_name():随机安全色名

safe_hex_color():随机安全HEX颜色

bs():随机公司服务名

company():随机公司名(长)

company_prefix():随机公司名(短)

company_suffix():公司性质

credit_card_expire():随机信用卡到期日

credit_card_full():生成完整信用卡信息

credit_card_number():信用卡号

credit_card_provider():信用卡类型

credit_card_security_code():信用卡安全码

currency_code():货币编码

am_pm():AM/PM

century():随机世纪

date():随机日期

date_between():随机生成指定范围内日期,参数:start_date,end_date取值:具体日期或者today,-30d,-30y类似

date_between_dates():随机生成指定范围内日期,用法同上

date_object():随机生产从1970-1-1到指定日期的随机日期。

date_this_month():

date_this_year():

date_time():随机生成指定时间(1970年1月1日至今)

date_time_ad():生成公元1年到现在的随机时间

date_time_between():用法同dates

future_date():未来日期

future_datetime():未来时间

month():随机月份

month_name():随机月份(英文)

past_date():随机生成已经过去的日期

past_datetime():随机生成已经过去的时间

time():随机24小时时间

timedelta():随机获取时间差

time_object():随机24小时时间,time对象

time_series():随机TimeSeries对象

timezone():随机时区

unix_time():随机Unix时间

year():随机年份

file_extension():随机文件扩展名

file_name():随机文件名(包含扩展名,不包含路径)

file_path():随机文件路径(包含文件名,扩展名)

mime_type():随机mime Type

ascii_company_email():随机ASCII公司邮箱名

ascii_email():随机ASCII邮箱

ascii_free_email():

ascii_safe_email():

company_email():

domain_name():生成域名

domain_word():域词(即,不包含后缀)

email():

free_email():

free_email_domain():

f.safe_email():安全邮箱

f.image_url():随机URL地址

ipv4():随机IP4地址

ipv6():随机IP6地址

mac_address():随机MAC地址

tld():网址域名后缀(.com,.net.cn,等等,不包括.)

uri():随机URI地址

uri_extension():网址文件后缀

uri_page():网址文件(不包含后缀)

uri_path():网址文件路径(不包含文件名)

url():随机URL地址

user_name():随机用户名

isbn10():随机ISBN(10位)

isbn13():随机ISBN(13位)

job():随机职位

paragraph():随机生成一个段落

paragraphs():随机生成多个段落,通过参数nb来控制段落数,返回数组

sentence():随机生成一句话

sentences():随机生成多句话,与段落类似

text():随机生成一篇文章(不要幻想着人工智能了,至今没完全看懂一句话是什么意思)

word():随机生成词语

words():随机生成多个词语,用法与段落,句子,类似

binary():随机生成二进制编码

boolean():True/False

language_code():随机生成两位语言编码

locale():随机生成语言/国际 信息

md5():随机生成MD5

null_boolean():NULL/True/False

password():随机生成密码,可选参数:length:密码长度;special_chars:是否能使用特殊字符;digits:是否包含数字;upper_case:是否包含大写字母;lower_case:是否包含小写字母

sha1():随机SHA1

sha256():随机SHA256

uuid4():随机UUID

first_name():

first_name_female():女性名

first_name_male():男性名

first_romanized_name():罗马名

last_name():

last_name_female():女姓

last_name_male():男姓

last_romanized_name():

name():随机生成全名

name_female():男性全名

name_male():女性全名

romanized_name():罗马名

msisdn():移动台国际用户识别码,即移动用户的ISDN号码

phone_number():随机生成手机号

phonenumber_prefix():随机生成手机号段

profile():随机生成档案信息

simple_profile():随机生成简单档案信息

Python爬虫可视化数据分析是指使用Python编写爬虫程序来获取数据,然后使用可视化工具对数据进行分析和展示的过程。 在这个过程中,我们可以使用Python的各种库和框架来实现数据的爬取和处理。常用的爬虫库包括BeautifulSoup、Scrapy等,而数据分析和可视化则可以使用Matplotlib、Pandas、Seaborn等库来实现。 首先,我们需要定位到需要爬取的数据源。在引用中提到的例子中,我们可以通过爬取短文网(https://www.duanwenxue.com/jingdian/zheli/)来获取文章数据。 接下来,我们可以使用爬虫实现方法,例如在引用中提到的定位到爬取数据的方法来编写爬虫程序。通过解析网页的HTML结构,我们可以提取所需的数据,并保存到本地或者数据库中。 一旦数据被爬取并保存,我们可以使用数据可视化的方法来进行分析和展示。例如,我们可以使用Matplotlib绘制柱状图、折线图等来展示文章数量的统计情况,如引用中的将短文网的各类文章做一个统计。 此外,我们还可以对某一类文章进行更深入的分析。通过使用Pandas和Seaborn等库,我们可以对文章的文字长度、情感倾向等进行统计和可视化分析,以获得更多有意义的信息。 总结起来,Python爬虫可视化数据分析是一个将爬取到的数据进行处理、统计和展示的过程。通过使用Python中的各种库和框架,我们可以实现爬虫程序的编写、数据的获取和处理,以及数据的可视化分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [python爬虫及数据可视化分析](https://blog.csdn.net/Tbaodeng/article/details/111825063)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python项目开发,毕业设计,开心麻花影视作品分析系统,含源码和使用说明.zip](https://download.csdn.net/download/sohoqq/88282650)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值