数据竞赛之类(其实也就是一般项目吧)一般首先要做的就是可视化,可以直观得看到数据分布,虽然目前数学水平可能达不到识别某分布适合什么模型(eg非高斯分布做变换转高斯分布),但是至少可以直观了解数据情况。
matplotlib
类似MATLAB风格的功能强大、跨平台,但是相对底层,需要写大量的boilerplate code,so有了seaborn这种mpl基础上的API,有更多简单的高级函数,并与df有机结合
一般也都是现查,但是有一些毒瘤问题拎出来解决一下。而且还没找到一个万能处理方法
- 中午显示问题(下面case有方法)
- 坐标轴名称和刻度字体大小
- plt.xlable('name', fontsize=15)
- plt.xlim([0,10])
- plt.xticks(np.linspace(1,20,20), fontsize=30) #刻度
case:画页面置换算法里的example,折线图
导包 & 设置要画的数据
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(1,20,20,endpoint=True)#初始值、终止值、数量、是否包含终止值
y = [7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1]
len(y)
#output:20
然后开始画图,这里尽可能使用了多的设置方式
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
plt.figure(figsize=(18,10))
#坐标轴设置
plt.xlabel("时间", fontsize=30)#标签
plt.ylabel("要访问的页面", fontsize=30)
plt.xticks(np.linspace(1,20,20), fontsize=30)#刻度
plt.yticks(fontsize=30)
plt.xlim([1,20])#范围
plt.ylim([0,7])
plt.plot(x,y)#默认折线图
plt.show()
output:
case2:天气柱状图
利用pandas的plt,data.loc[t].plot(kind='bar')。这里的data是df类型数据,loc可以根据index选取一行,pandas会自动将columns作为x,元素值作为y
citys = '上海 北京 美国 秦皇岛 哈尔滨 深圳 齐齐哈尔'
citys = citys.split(' ')
print(citys)
t = []
for city in citys:
if city in data.index:
t.append(city)
# print("%s不存在"%city)
data.loc[t].plot(kind='bar', figsize=(12,8))#若是list,x轴就是list的str。各项以图例形式在右上角给出。若是str,x就是各项
plt.xlabel("城市", fontsize=18)
plt.ylabel("污染物含量(μg/m3)", fontsize=18)
plt.xticks( fontsize=18)#刻度
plt.yticks( fontsize=18)
plt.title('%s市AQI及各项污染物含量示意图'%' '.join(t),size=20)
plt.ylim([0,150])
plt.savefig('cities\'AQI.png')
plt.show()
如果把plot() 里面的list换成单个的str,就会分别展示,每个都这样
补一个【坑】:在pycharm里plt.show()可能会不显示,要把import plt放在mpl前面,然后mpl.use('TkAgg')
seaborn
mlp基础上的API,有更多简单的高级函数,并与df有机结合