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

python动手学数据分析task04数据可视化,第1张

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

文章目录
  • 第二章数据可视化
      • pyecharts
      • bokeh交互式可视化库
      • fake库是怎么使用的
        • 随机生成指定类型数据:
      • Fake库常用方法

第二章数据可视化

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

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



死亡人数的得出


旋转一下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():生成身份z号

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():随机xyk到期日

credit_card_full():生成完整xyk信息

credit_card_number():xyk号

credit_card_provider():xyk类型

credit_card_security_code():xyk安全码

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():随机生成简单档案信息

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5572247.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-14
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存