上一主题 下一主题
返回列表 发新帖

可视化分析总结

[复制链接]

66

主题

184

帖子

559

积分

高级会员

Rank: 4

积分
559
发表于 2020-12-28 18:32:13 | 显示全部楼层 | 阅读模式

主要用到的库

import pandas as pd
from pyecharts.charts import   **************
from pyecharts import options as opts

来说首先引入欲处理的数据

数据经过筛选取出我们需要的数据 进行相关的排序。

将处理好的数据传入,生成pyecharts创建柱状图,饼图,等图形界面。

创建图之后初始化配置,即设置大小 。

全局配置,添加标题,添加工具箱,分割线等辅助工具

系统配置设置标签样式

写出文件

部分代码:

def creat_cut_likes(df):
    #将数据进行分段
    Bins = [0, 1000000, 5000000, 10000000, 25000000, 50000000, 100000000, 5000000000]
    Labels = ['0-100', '100-500', '500-1000', '1000-2500', '2500-5000', '5000-10000', '10000以上']
    len_stage = pd.cut(df['likes'], bins=Bins, labels=Labels).value_counts().sort_index()

    #传入数据
    attr  = len_stage.index.tolist()
    v1 = len_stage.values.tolist()

    #可视化柱状图生成
    bar = Bar(init_opts=opts.InitOpts(width='800px',height='400px'))
    #XY轴添加数据
    bar.add_xaxis(attr)
    bar.add_yaxis('',v1)
    #设置全局配置项目,即为项目标题,工具箱(下载图片),Y轴分割线
    bar.set_global_opts(title_opts=opts.TitleOpts('抖音大V点赞分布情况(万)',pos_left='center',pos_top='18'),
                        toolbox_opts=opts.ToolboxOpts(is_show=True,feature={"saveAsImage": {}}),
                        yaxis_opts=opts.AxisOpts(is_show=True,splitline_opts=opts.SplitLineOpts(is_show=True))
                        )
    #设置系统配置项,标签样式
    bar.set_series_opts(label_opts=opts.LabelOpts(position='top',color='black'))
    #写出
    bar.render('抖音大V点赞分布情况(万).html')

creat_cut_likes(df)
def create_type_likes(df):
    # 分组求和
    likes_type_message = df.groupby(['category'])
    likes_type_com = likes_type_message['likes'].agg(['sum'])
    likes_type_com.reset_index(inplace=True)
    # 处理数据
    dom = [{'name': name, 'value': num} for name, num in
           zip(likes_type_com['category'], likes_type_com['sum'])]
    # 初始化配置
    treemap = (TreeMap(init_opts=opts.InitOpts(width="800px", height="400px"))
               # 添加数据
               .add('', dom)
               # 设置全局配置项,标题、工具箱(下载图片)
               .set_global_opts(title_opts=opts.TitleOpts(title="各类型抖音大V点赞数汇总图",
                                                          pos_left="center", pos_top="5"),
                                toolbox_opts=opts.ToolboxOpts(is_show=True,
                                                              feature={"saveAsImage": {}}),
                                legend_opts=opts.LegendOpts(is_show=False)) )
    treemap.render("各类型抖音大V点赞数汇总图.html")

create_type_likes(df)
def creat_gender(df):
    #CSV文件Gender替换 便于阅读
    df.loc[df.gender == '0', 'gender'] = '未知'
    df.loc[df.gender == '1', 'gender'] = '男性'
    df.loc[df.gender == '2', 'gender'] = '女性'
    #print(df['gender'])
    #根据性别进行分组  并计算搁搁性别的总人数  #sum直接字符串拼接  count出现次数进行计算+和
    gender_list = df.groupby(['gender'])['gender'].agg(['count'])
    gender_list = gender_list.reset_index(inplace=False)
    #print(gender_list)
    #可视化饼图
    #首先给饼图传入数据
    attr = gender_list['gender']
    print(attr)
    v1 = gender_list['count']
    print(v1)
    #pyechart操作之前都要进行初始化配置
    pie = Pie(init_opts=opts.InitOpts(width='800px',height='400px'))
    #饼图添加数据设置半径
    pie.add('',[list(z) for z in zip(attr, v1)],radius=['40%','75%'])
    #饼图全局配置项  设置标题 图例 工具箱(下载图片)
    pie.set_global_opts(title_opts=opts.TitleOpts(title='抖音大V性别分布情况',pos_left='center'),
                        legend_opts=opts.LegendOpts(orient='vertical',pos_left='left'),
                        toolbox_opts=opts.ToolboxOpts(feature={'saveAsImage':{}})
                        )
    #设置系统配置项
    pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%"))
    pie.render("抖音大V性别分布情况.html")
    print('写出成功!')
creat_gender(df)
def create_fans(df):
    # CSV文件排序操作
    df.sort_values('fans',ascending=False)
    #传入数据
    attr = df['name'][0:10]
    v1 = ['%.1f' % (float(i) / 10000) for i in df['fans'][0:10]]
    print(v1)

    #柱状图生成
    bar = Bar(init_opts=opts.InitOpts(width='800px',height='400px'))
    #XY数据设置
    bar.add_xaxis(list(reversed(attr.tolist())))
    bar.add_yaxis('',list(reversed(v1)))
    #全局配置 标题 工具箱 分割线
    bar.set_global_opts(title_opts=opts.TitleOpts(title='抖音粉丝数TOP10(万)',pos_left='center',pos_top= '18'),
                        toolbox_opts=opts.ToolboxOpts(feature={'saveAsImage':{}}),
                        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True))
                        )
    #系统配置
    bar.set_series_opts(label_opts=opts.LabelOpts(is_show=True,position='right',color='black'))
    #xy反转
    bar.reversal_axis()
    #写出
    bar.render('抖音粉丝数TOP10(万).html')

create_fans(df)
def create_province_map(df):
    # 筛选数据
    df = df[df["country"] == "中国"]
    df1 = df.copy()
    # 数据替换
    df1["province"] = df1["province"].str.replace("省", "").str.replace("壮族自治区", "").str.replace("维吾尔自治区", "").str.replace("自治区", "")
    # 分组计数
    df_num = df1.groupby("province")["province"].agg(count="count")
    df_province = df_num.index.values.tolist()
    df_count = df_num["count"].values.tolist()

    # 初始化配置
    map = Map(init_opts=opts.InitOpts(width="800px", height="400px"))
    # 中国地图
    map.add("", [list(z) for z in zip(df_province, df_count)], "china")
    # 设置全局配置项,标题、工具箱(下载图片)、颜色图例
    map.set_global_opts(title_opts=opts.TitleOpts(title="抖音大V省份分布情况", pos_left="center", pos_top="0"),
                        toolbox_opts=opts.ToolboxOpts(is_show=True, feature={"saveAsImage": {}}),
                        # 设置数值范围0-600,is_piecewise标签值连续
                        visualmap_opts=opts.VisualMapOpts(max_=600, is_piecewise=False))
    map.render("抖音大V省份分布情况.html")

create_province_map(df)
def create_wordcloud(df, picture):
    words = pd.read_csv('file/chineseStopWords.txt', encoding='gbk', sep='\t', names=['stopword'])
    # 分词
    text = ''
    df1 = df[df["signature"] != ""]
    df1 = df1.copy()
    for line in df1['signature']:
        text += ' '.join(jieba.cut(str(line).replace(" ", ""), cut_all=False))
    # 停用词
    stopwords = set('')
    stopwords.update(words['stopword'])
    backgroud_Image = plt.imread('file/douyin.png')
    # 使用抖音背景色
    alice_coloring = np.array(Image.open(r"file/douyin.png"))
    image_colors = ImageColorGenerator(alice_coloring)
    wc = WordCloud(
        background_color='white',
        mask=backgroud_Image,
        font_path='file/simhei.ttf',
        max_words=2000,
        max_font_size=70,
        min_font_size=1,
        prefer_horizontal=1,
        color_func=image_colors,
        random_state=50,
        stopwords=stopwords,
        margin=5
    )
    wc.generate_from_text(text)
    wc.to_file(picture)
    print('生成词云成功!')
已有1人评分威望 贡献 理由
李恒道 + 1 + 1 ggnb!

查看全部评分 总评分:威望 +1  贡献 +1 

回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表