python+plotly让你的数据可视化,绘制各种牛逼的柱状图、折线图。
安装方式:pip install plotly pandas openpyxl
import pandas as pd
import os
import plotly.express as px
"""
数据可视化
"""
# 输入一个DataFrame,根据索引,输出对应索引的内容
def group_by_select(df: pd.DataFrame, column: str, slice=None):
# 地区、演员表中的每一个单元格有多个数据,由逗号分割,可以采用按逗号分割的方式对数据进行处理后再统计
# 上映时间中的每一个单元格是字符串格式的日期,字符串前4个字符则为年份,可以采用切片的方式提取提取年份
'''
:param df: 输入的DataFrame
:param column: column=DataFrame的任一列索引,比如column='地区'
:param slice: 返回数据的长度
:return:
output=[('美国', 153), ('英国', 38), ('加拿大', 22), ('日本', 15), ('德国', 12)]
output2存放output对应的电影名[['<<明日边缘>>','<<银河护卫队>>',...],[...],...[]]
'''
data_list = df[column].tolist()
output = {}
for data in data_list:
if "-" in data:
data = data[:4]
for dat in data.split(','):
output[dat] = output.get(dat, 0) + 1
output = sorted(output.items(), key=lambda x: x[1], reverse=True) # 降序排列
if slice:
output = output[:slice] # 切片
output2 = []
for op, _ in output:
output2.append(df[df[column].str.contains(op)]['电影名'].map(lambda x: f"<<{x}>>").tolist())
return output, output2
# 获取当前文件所在的文件夹路径
base_path = os.getcwd()
excel_path = os.path.join(base_path, '科幻片排行榜.xlsx')
df = pd.read_excel(excel_path, sheet_name='sheet1')
region, _ = group_by_select(df=df, column='地区')
columns = ['地区', '电影数量']
region = pd.DataFrame(region, columns=columns)
# 创建一个柱状图
fig = px.bar(region,
x=columns[0], # x轴数据
y=columns[1], # y轴数据
text=columns[1], # 数据标签
title='各国家地区电影数量', # 标题
color=columns[1], # 用不同的颜色显示不同的柱状图
)
# 设置数据标签显示在柱状图外面
fig.update_traces(textposition='outside')
fig.show()
fig.write_html('柱状图.html')
绘制的柱状图效果如下