pyecharts は、動画データの分析の可視化を実現します

映画のデータに基づいて、pyecharts を使用して視覚的な分析を行います。

データ紹介

import pandas as pd
data=pd.read_csv('./电影.csv')
data.head()

データの最初の 5 行は次のとおりです。
ここに画像の説明を挿入
インストールする必要がある python ライブラリ

pip install pandas
pip install pyecharts

データクリーニング

欠損値を表示する

data.isnull().sum()

一部の映画は脚本家や主演がいないため、クロールされませんでしたが、データの分析や可視化には影響しません。
ここに画像の説明を挿入
前回のデータ紹介からわかるように、現在のところ、取得したデータの各フィールドをクリーンアップする必要はありません。この部分はスキップしてください。(絵文字を追加したいのですが、追加する場所が見つかりません。)

データの視覚化

公開年と作品数

Year=data['上映年份'].value_counts().reset_index()
Year.rename(columns={
    
    "index":"上映年份","上映年份":"电影数量"},inplace=True)
Year.head()

ここに画像の説明を挿入
Jupyter Notebook で実行しています. 他のエディタで実行してコードbar.render_notebook()の最後の行をbar.render("xxx.html"), 操作が成功するとファイルが生成されますxxx.html. 開くとビジュアルチャートが表示されるはずです. 以降のコードは同じです。
パイチャートのインポート

from pyecharts.charts import Bar,Pie,Line
import pyecharts.options as opts
bar = (
    Bar(init_opts=opts.InitOpts(height='700px', theme='light'))
    .add_xaxis(
        Year['上映年份'].tolist()[::-1])
    .add_yaxis(
            "电影数量",
            Year['电影数量'].tolist()[::-1],
            label_opts=opts.LabelOpts(is_show=False),
        )
    .set_series_opts(itemstyle_opts=opts.ItemStyleOpts(
            border_color='#5C3719', ))
    .set_global_opts(
                title_opts=opts.TitleOpts(
                    title='上映年份及电影数量',
                    subtitle='截止2023年3月',
                    title_textstyle_opts=opts.TextStyleOpts(
                        font_family='Microsoft YaHei',
                        font_weight='bold',
                        font_size=22,
                    ),
                    pos_top='1%'),
                legend_opts=opts.LegendOpts(is_show=True),
                xaxis_opts=opts.AxisOpts(
                    #             name='电影数量',
                    is_show=True,
                    max_=int(Year['电影数量'].max()),
                    axislabel_opts=opts.LabelOpts(
                        font_family='Microsoft YaHei',
                        font_weight='bold',
                        font_size='14'  #标签文本大小
                    )),
                yaxis_opts=opts.AxisOpts(
                    #             name='上映年份',
                    is_show=True,
                    axislabel_opts=opts.LabelOpts(
                        #interval=0,#强制显示所有y轴标签,需要可以加上
                        font_family='Microsoft YaHei',
                        font_weight='bold',
                        font_size='14'  #标签文本大小
                    )),
                tooltip_opts=opts.TooltipOpts(
                    is_show=True,
                    trigger='axis',
                    trigger_on='mousemove|clike',
                    axis_pointer_type='shadow',
                    ),
                toolbox_opts=opts.ToolboxOpts(is_show=True,
                    pos_left="right",
                    pos_top="center",
                    feature={
    
    "saveAsImage":{
    
    }}
                    )
    ).reversal_axis())
bar.render_notebook()

ここに画像の説明を挿入
ここでは、すべての Y 軸ラベルを表示するように設定していません。コードは、すべての Y 軸ラベルを強制的に表示するようにコメントを付けています。チャートによると、2010 年に公開された映画の最大数は 14 本でした。

トップ10の監督と映画の数

Director=data['导演'].value_counts()[0:11].reset_index()
Director.rename(columns={
    
    "index":"导演","导演":"电影数量"},inplace=True)
Director.head()

ここに画像の説明を挿入

pie = (
    Pie(init_opts=opts.InitOpts(theme='light'))
    .add(
        series_name='电影类型',
        data_pair=[list(z) for z in zip(Director['导演'].to_list(), Director['电影数量'].to_list())],
        radius=["40%", "75%"],
    )
#     .set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"])
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="导演及电影数量",
            subtitle='TOP10',
                    title_textstyle_opts=opts.TextStyleOpts(
                        font_family='Microsoft YaHei',
                        font_weight='bold',
                        font_size=22,
                    ),
            ),
        legend_opts=opts.LegendOpts(
            pos_left="left",
            pos_top="center",
            orient='vertical',
            is_show=True
            ),
        toolbox_opts=opts.ToolboxOpts(
            is_show=True,
            pos_left="right",
            pos_top="center",
            feature={
    
    "saveAsImage":{
    
    }}
            )
    )
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
pie.render_notebook()

ここに画像の説明を挿入
これは TOP10 データのみを取得します。さらにデータを取得する場合は、変更します

Director=data['导演'].value_counts()[0:11].reset_index()

[0:10] はインデックス 0 からインデックス 9 までフェッチすることを意味し、自分で変更できます。

トップ10の脚本家と映画の数

Screenwriter=data['编剧'].value_counts()[0:11].reset_index()
Screenwriter.rename(columns={
    
    "index":"编剧","编剧":"电影数量"},inplace=True)
Screenwriter.head()

ここに画像の説明を挿入

c = (
    Pie(init_opts=opts.InitOpts(theme='light'))
    .add(
        "",
        [list(z) for z in zip(Screenwriter['编剧'].to_list(), Screenwriter['电影数量'].to_list())],
        radius=["30%", "75%"],
        rosetype="radius",
        )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="编剧及电影数量",
            subtitle='TOP10',
        ),
        
        legend_opts=opts.LegendOpts(
            pos_left="left",
            pos_top="center",
            orient='vertical',
            is_show=True,
        )
    )
)
c.render_notebook()

ここに画像の説明を挿入

映画の長さと数

Film_length=data['片长'].value_counts().sort_index().reset_index()
Film_length.rename(columns={
    
    "index":"片长","片长":"电影数量"},inplace=True)
Film_length

ここに画像の説明を挿入

c = (
    Bar()
    .add_xaxis(Film_length['片长'].to_list())
    .add_yaxis(
        "电影数量", Film_length['电影数量'].to_list(),
        label_opts=opts.LabelOpts(is_show=False),
              )
    .set_global_opts(title_opts=opts.TitleOpts(title="电影片长及数量"))
)
c.render_notebook()

ここに画像の説明を挿入
映画の長さは、最短が45分、最長が238分で、主に98~132分あたりに集中しています。映画の質は長さとは関係なく、主なものは内容だと思います。

映画の評価と数量

Douban_score=data['豆瓣评分'].value_counts().sort_index(ascending=False).reset_index()
Douban_score.rename(columns={
    
    "index":"豆瓣评分","豆瓣评分":"电影数量"},inplace=True)
Douban_score

ここに画像の説明を挿入

    Line()
    .set_global_opts(
        title_opts=opts.TitleOpts(title="电影豆瓣评分及数量"),
        xaxis_opts=opts.AxisOpts(type_="category"),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            axistick_opts=opts.AxisTickOpts(is_show=True),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
    )
    .add_xaxis(xaxis_data=Douban_score['豆瓣评分'])
    .add_yaxis(
        series_name="电影数量",
        y_axis=Douban_score['电影数量'],
        symbol="emptyCircle",
        is_symbol_show=True,
        label_opts=opts.LabelOpts(is_show=False),
        itemstyle_opts=opts.ItemStyleOpts(
            color="red"),
        markpoint_opts=opts.MarkPointOpts(
            data=[opts.MarkPointItem(type_="max",name="最大值")]
        )
    )
    
)
c.render_notebook()

ここに画像の説明を挿入
Douban が 8.9 点で最もスコアが高く、合計 41 本の映画がこのスコアを獲得したことがわかります。好みは人それぞれで、自分が良いと思った映画でも、他の人にとってはそうでもないかもしれません。これは、高評価の映画を維持することの価値も反映しています。

この記事は最初にここに書いて、後で更新します. pyecharts には多くの構成があります. 具体的には、公式 Web サイトのドキュメントに従って、必要なスタイルにチャートを変更できます.

おすすめ

転載: blog.csdn.net/weixin_46322367/article/details/129941562