相关库:numpy、panda、matplotlib
- 一些基础方法
1.1绘制函数图
plt.plot(x, y, format_string, **kwargs)
x:x轴数据,列表或数组,可选
y:y轴数据,列表或数组
format_string:控制曲线的格式字符串,可选,由颜色字符、风格字符和标记字符组成。
颜色字符 | 说明 | 颜色字符 | 说明 |
‘b’ | 蓝色 | ‘m’ | 洋红色 |
‘g’ | 绿色 | ‘y’ | 黄色 |
‘r’ | 红色 | ‘k’ | 黑色 |
‘c’ | 青绿色 cyan | ‘w’ | 白色 |
‘#008000’ | RGB某颜色 | ‘0.8’ | 灰度值字符串 |
风格字符 | 说明 |
‘-‘ | 实线 |
‘–’ | 破折线 |
‘-.’ | 点划线 |
‘:’ | 虚线 |
’ ’ ’ ‘ | 无线条 |
标记字符 | 说明 | 标记字符 | 说明 |
‘.’ | 点标记 | ‘1’ | 下花三角标记 |
‘,’ | 像素标记(极小点) | ‘2’ | 上花三角标记 |
‘o’ | 实心圈标记 | ‘3’ | 左花三角标记 |
‘v’ | 倒三角标记 | ‘4’ | 右花三角标记 |
‘^’ | 上三角标记 | ’s’ | 实心方形标记 |
‘>’ | 右三角标记 | ‘p’ | 实心五角标记 |
‘<’ | 左三角标记 | ‘*’ | 星形标记 |
‘h’ | 竖六边形标记 | ‘d’ | 瘦菱形标记 |
‘H’ | 横六边形标记 | ‘|’ | 垂直线标记 |
‘+’ | 十字标记 | ‘D’ | 菱形标记 |
‘x’ | x标记 |
**kwargs:第二组或更多,(x,y,format_string)
常用的参数:
color:控制颜色,color=’green’
linestyle:线条风格,linestyle=’dashed’
marker:标记风格,marker = ‘o’
markerfacecolor:标记颜色,markerfacecolor = ‘blue’
markersize:标记尺寸,markersize = ‘20’
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.figure(figsize=(4,2))
x = np.linspace(0, 2*np.pi, 50)
print(x)#均分计算指令
y = np.sin(x)
plt.plot(x,y,'bp--')
plt.show()
1.2绘制饼状图
import matplotlib.pyplot as plt
plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1,
startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False,
rotatelabels=False, *, normalize=None, data=None)
x: 即每个扇形的占比的序列或数组
explode:如果不是None,则是一个len(x)长度的数组,指定每一块的突出程度;突出显示,设置每一块分割出来的间隙大小
labels:为每个扇形提供标签的字符串序列
colors:为每个扇形提供颜色的字符串序列
autopct:如果它是一个格式字符串,标签将是fmt % pct。如果它是一个函数,它将被调用。
shadow:阴影
startangle:从x轴逆时针旋转,饼的旋转角度
pctdistance, default: 0.6每个饼片的中心与由autopct生成的文本的开头之间距离与半径的比率,大于1的话会显示在圆外
labeldistance, default 1.1饼状图标签绘制时的径向距离(我认为这个也与8类似是个比率)。如果设置为None,则不绘制标签,而是存储在图例()中使用。
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
task = ["高数上下复习(15h)","英语每日指标(14h)","最优化(5h)","数据挖掘实验(15h)","考研择校(4h)","数学建模规划(5h)","jupyter学习(5h)"]
time = np.array([15,14,5,15,4,5,5])
totaltime = sum(time)
plt.pie(x=time,labels=task,
autopct='%1.1f%%', #*饼图上标注百分比
shadow=False, #*是否有阴影
startangle=0 #*逆时针旋转角度
)
# plt.axis('equal') # 显示为圆(避免比例压缩为椭圆)
plt.show()
1.3绘制直方图(分箱)
matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype=’bar’, align=’mid’, orientation=’vertical’, rwidth=None, log=False, color=None, label=None, stacked=False, \*, data=None, \*\*kwargs)
参数:此方法接受以下描述的参数:
x:此参数是数据序列。
bins:此参数是可选参数,它包含整数,序列或字符串。
range:此参数是可选参数,它是箱子的上下限。
density:此参数是可选参数,它包含布尔值。
weights:此参数是可选参数,并且是一个权重数组,与x的形状相同。
bottom:此参数是每个容器底部基线的位置。
histtype:此参数是可选参数,用于绘制直方图的类型。 {‘bar’,‘barstacked’,‘step’,‘stepfilled’}
align:此参数是可选参数,它控制如何绘制直方图。 {‘left’,‘mid’,‘right’}
rwidth:此参数是可选参数,它是条形图的相对宽度,是箱宽度的一部分
log:此参数是可选参数,用于将直方图轴设置为对数刻度
color:此参数是一个可选参数,它是一个颜色规格或一系列颜色规格,每个数据集一个。
label:此参数是可选参数,它是一个字符串或匹配多个数据集的字符串序列。
normed:此参数是可选参数,包含布尔值,而是使用density关键字参数。
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(1000)
plt.hist(x,10)
plt.show()
2d直方图:4.6Python数据处理篇之Matplotlib系列(六)---plt.hist()与plt.hist2d()直方图 - 简书 (jianshu.com)
含曲线拟合:(138条消息) [391]matplotlib.pyplot中的hist函数_周小董的博客-CSDN博客_ax.hist
含堆叠式:(138条消息) matplotlib.pyplot.hist参数详解_TravelingHat的博客-CSDN博客_matplotlib.pyplot.hist
1.4绘制箱型图(胡须图)
df.plot.box(title="title") # 箱型图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = [1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100,4000,5000]
df = pd.DataFrame(data)
df.plot.box(title="title") # 箱型图
plt.grid(linestyle="--", alpha=0.3) # 显示网格线
plt.show()
绘制多个箱型图及简便用法:Python pandas.DataFrame.plot.box用法及代码示例 - 纯净天空 (vimsky.com)
1.5贡献度分析(帕累托分析)
给出产品的销售额,按照大到小排序,绘制积分变换曲线(由0->1递增,且斜率逐渐变小)
p.plot(color='r', secondary_y=True, style='-o', linewidth=2)
# secondary_y = True:设置第二纵坐标
plt.annotate(format(p[6], '.4%'), # 文字内容
xy=(6, p[6]), # 点标注的位置
xytext=(6*0.9, p[6]*0.9), # 文字标记的位置
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
import pandas as pd
import matplotlib.pyplot as plt
import xlrd
# xlrd是读excel,xlwt是写excel的库
dish_profit = r'E:\data\catering_dish_profit.xls'
# 读取数据(设置主键为菜品名)、显示的时候自动设置横轴中文标记
data = pd.read_excel(dish_profit, index_col='菜品名')
print(data)
data = data['盈利'].copy() # 复制一份
print(data)
data= data.sort_values(ascending=False)
data.plot(kind='bar') # 绘制柱状图
p = 1.0*data.cumsum()/data.sum() # data.cumsum():求积分 Σ0,Σ1,Σ2,Σ3……
p.plot(color='r', secondary_y=True, style='-o', linewidth=2)
# secondary_y = True:设置第二纵坐标
# 标记特殊点!详细教程:https://blog.csdn.net/TeFuirnever/article/details/88946088
plt.annotate(format(p[6], '.4%'), # 文字内容
xy=(6, p[6]), # 点标注的位置
xytext=(6*0.9, p[6]*0.9), # 文字标记的位置
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2")) # arrowprops #箭头参数,参数类型为字典dict
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.ylabel('盈利(元)')
plt.show()
1.6周期性分析
import pandas as pd
import matplotlib.pyplot as plt
df_normal = pd.read_csv(r"E:\data\user.csv")
print(df_normal)
plt.figure(figsize=(8,4))
plt.plot(df_normal["Date"],df_normal["Eletricity"])
plt.xlabel("日期")
x_major_locator = plt.MultipleLocator(7)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.ylabel("每日电量")
plt.title("正常用户电量趋势")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.show()
df_steal = pd.read_csv(r'E:\data\Steal user.csv')
plt.figure(figsize=(10,9))
plt.plot(df_steal["Date"],df_steal["Eletricity"])
plt.xlabel("日期")
plt.ylabel("日期")
# (解决横轴单位间隔太小)自定义刻度间隔:
x_major_locator = plt.MultipleLocator(7)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.title("窃电用户电量趋势")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.show()
1.7相关性分析
相关性公式:
Pearson(皮尔逊)相关系数:
重要代码:
(120条消息) Seaborn绘制热力图_菇綡的博客-CSDN博客_seaborn 热力图
(122条消息) seaborn—sns.heatmap绘制热力图_哎呦-_-不错的博客-CSDN博客_heatmap热力图
# 计算相关性矩阵:
data.corr()
# 热力图绘制:
sns.set()
ax=sns.heatmap(uniform_data)
plt.show()
获取数据、计算相关系数
import pandas as pd
catering_sale = r'E:\data\catering_sale_all.xls'
print(catering_sale)
data = pd.read_excel(catering_sale,index_col='日期')
print(data)
print(data.corr())
print(data.corr()['百合酱蒸凤爪'])
print(data['百合酱蒸凤爪'].corr(data['翡翠蒸香茜饺']))
绘制相关性热力图
import seaborn as sns
import numpy as np
sns.set()
uniform_data=np.array(data.corr())
ax=sns.heatmap(uniform_data)
plt.show()
1.8Lasso回归寻找关键影响属性
1.9灰色模型实现短期预测
1.10支持向量回归模型
2.库的学习
较基础:3.3 Contours 等高线图_哔哩哔哩_bilibili
【matplotlib常用统计图】05更多的绘图工具的了解_哔哩哔哩_bilibili