Python画图

本文展示了如何使用Python的pandas和matplotlib库进行数据可视化,包括箱型图用于识别异常值,柱状图展示数据分布,折线图描绘时间序列数据变化,饼图表示部分与整体的关系,以及散点图用于观察两个变量间的关联性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

箱型图

# 制作
import pandas as pd
from matplotlib import pyplot as plt


path = "F:\pythonProject\dataprocessing\data\Steal user.csv"
data = pd.read_csv(path)
print(data.describe())

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure()

p = data.boxplot(return_type='dict')  # 画箱线图。直接使用DataFrame的方法
x = p['fliers'][0].get_xdata()  # 'fliers'即为异常值标签
y = p['fliers'][0].get_ydata()
y.sort()  # 从小到大排序

# 用annotate添加注释 其中有些相近的点,注解会出现重叠,难以看清,需要一些技巧来控制 以下参数是经过调试的
for i in range(len(x)):
    if i > 0:
        plt.annotate(y[i], xy=(x[i], y[i]), xytext=(x[i] + 0.08, y[i]))
    else:
        plt.annotate(y[i], xy=(x[i], y[i]), xytext=(x[i] + 0.08, y[i]))
plt.title('3010-电量图')
plt.show()

 柱状图

# 制作
import pandas as pd
from matplotlib import pyplot as plt


path = r"F:\pythonProject\dataprocessing\data\user.csv"
data = pd.read_csv(path)

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

bins = [2000, 2500, 3000, 3500, 4000, 4500, 5000, 5500, 6000, 6500, 7000, 7500, 8000]
labels = ['[2000,2500)', '[2500,3000)', '[3000,3500)', '[3500,4000)',
          '[4000,4500)', '[4500,5000)', '[5000,5500)', '[5500,6000)',
          '[6000,6500)', '[6500,7000)', '[7000,7500)', '[7500,8000)']  #类别的概念
data['sale分层'] = pd.cut(data.Eletricity, bins, labels=labels)
aggResult = data.groupby('sale分层').agg({'Eletricity': 'count'})

pAggResult = round(aggResult / aggResult.sum(), 2, ) * 100

plt.figure(figsize=(15, 6))  # 设置图框大小尺寸
pAggResult['Eletricity'].plot(kind='bar', width=0.7, fontsize=15, color='red')  # 绘制频率直方图
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.title('3010-用户用电直方图', fontsize=20)
plt.show()

折线图

# 制作
import pandas as pd
from matplotlib import pyplot as plt


path = r"F:\pythonProject\dataprocessing\data\catering_sale_all.xls"
data = pd.read_excel(path)

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(15, 7))
plt.plot(data['日期'], data['百合酱蒸凤爪'], color='green', label='百合酱蒸凤爪', marker='1')
plt.plot(data['日期'], data['翡翠蒸香茜饺'], color='red', label='翡翠蒸香茜饺', marker='2')
plt.plot(data['日期'], data['金银蒜汁蒸排骨'], color='skyblue', label='金银蒜汁蒸排骨', marker='3')
plt.plot(data['日期'], data['乐膳真味鸡'], color='cyan', label='乐膳真味鸡', marker='4')
plt.plot(data['日期'], data['蜜汁焗餐包'], color='white', label='蜜汁焗餐包', marker='s')
plt.plot(data['日期'], data['生炒菜心'], color='black', label='生炒菜心', marker='p')
plt.plot(data['日期'], data['铁板酸菜豆腐'], color='magenta', label='铁板酸菜豆腐', marker='h')
plt.plot(data['日期'], data['香煎韭菜饺'], color='pink', label='香煎韭菜饺', marker='+')
plt.plot(data['日期'], data['香煎罗卜糕'], color='orange', label='香煎罗卜糕', marker='d')
plt.plot(data['日期'], data['原汁原味菜心'], color='aquamarine', label='原汁原味菜心', marker='o')
plt.legend()  #显示图例
plt.ylabel('销售量')
plt.title('3010-菜品销售量')
plt.show()

 饼图

# 制作
import pandas as pd
from matplotlib import pyplot as plt


path = r"F:\pythonProject\dataprocessing\data\dish_sale.xls"
data = pd.read_excel(path)

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

x = data['A部门']
labels = data['月份']

#画图
plt.figure(figsize=(8, 6))  #设置画布大小
plt.pie(x, labels=labels)  #绘制饼图
plt.title('3010-A部门每月份工作情况')
plt.axis('equal')
plt.show()

 散点图

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

x = np.linspace(-4 , 2 , 50)
y = np.exp(x) - x - 1

plt.figure(figsize=(8, 4))

plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('3010-画图')
plt.scatter(x,y,c='orange')
plt.show()

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值