最近看到沙海里面一个镜头“原来汪家是做大数据的”
感觉那个跑数据的界面很帅,然后找到了python的库àMatplotlib,这个库真的神奇,竟然能画出各种各样的数据分析图。数据挖掘与分析这个东西真的太神奇了。由于也是菜鸟一枚,也只能画出最简单的数据图。尝试了各种绘图函数之后做一个总结吧。将我自己尝试的代码贴在下方,也进行了详细的注释,一些啰嗦的代码我就删掉了留下了核心代码。
这里也用到了pandas(对解决数据分析任务执行能力很强的库)
折线图
最基本的图像,使用了Matplotlib 中的plot函数,响应的函数进行注释
核心代码:
unrate =pd.read_csv('pfc.csv')#pandas打开文件
first_twelve= unrate[0:12]#取文件中的前12条数据
plt.plot(first_twelve['DATE'],first_twelve['VALUE'])#分别传入xy轴的数据
plt.xticks(rotation=45)#由于x轴上的点重合将x轴上的点旋转45°
plt.xlabel('Month')#设置x轴标题
plt.ylabel('UnemploymentRate')#设置y轴标题
plt.title('MonthlyUnemployment Trends, 1948')#设置图标标题
效果图
2同一张图绘制多条曲线
只是提前设置好一个颜色的列表,利用for循环遍历年份进行绘制,这个根据实际的数据集决定不同的曲线代表的含义
核心代码:
unrate = pd.read_csv('pfc.csv')
#格式转换:格式化时间
unrate['DATE'] = pd.to_datetime(unrate['DATE'])
#将年份时间转换成月份时间,并新建列存起来
unrate['MONTH'] = unrate['DATE'].dt.month
colors = ['red','green','blue','black','yellow']#设置5个颜色数组,分别表示5条曲线颜色
plt.figure(figsize=(10,6)) #设置总绘图区域大小,需要在调用绘图函数之前调用才有效果
for i in range(5):
data12 = unrate[12*i :12*(i+1)] #读取数据(当年12个月的数据)
label = str(1948+i) #当年的曲线的标签
plt.plot(data12['MONTH'],data12['VALUE'], c=colors[i], label=label)# 绘制当年的曲线图
plt.xlabel('Month,Integer')
plt.ylabel('Unemployment Rate,Percent')
plt.title('Monthly Unemployment Trends,1948-1952')#设置图标名
#loc='best':选择合适的位置来摆放(loc是location的缩写)
#loc的取值有如下几种:best、upperright、upper left、lower left、lower right……
#还可以通过编号来指定摆放方式:比如best--0,upper-1
plt.legend(loc='best')
效果图
3条形图
核心代码:
reviews =pd.read_csv('pfc.csv')
#取出电影标签和公司名标签
cols =['FILM','RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm','Fandango_Ratingvalue', 'Fandango_Stars']
norm_reviews= reviews[cols]#取出需要展示的样本数据
#评分数据的列名
num_cols= ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue','Fandango_Stars']
bar_heights= norm_reviews.loc[0, num_cols].values#条形图的高度bar_heights
#条形图的位置bar_positions
bar_positions= arange(6) + 0.8
fig, ax =plt.subplots()
#绘制条形图
#第一个参数:x轴数据;第二个参数:y轴数据;第三个参数:每个条形的宽度
#ax.bar():条形图是竖着画
ax.bar(bar_positions,bar_heights,0.5)
#ax.barh():条形图是横着
#设置x轴标签的位置
#range(1,6):1、2、3、4、5
ax.set_xticks(range(1,6))
#设置x轴标签的名字和角度
ax.set_xticklabels(num_cols, rotation=45)
效果图
4.散点图
(个人觉得散点图跟机器学习分类的感觉一样虽然这个图中的点没有鲜明 的区别)
散点图的绘制使用到了scatter函数,这个函数两个参数分别表示xy轴要传入的值,最后绘制的图:图中的点对应xy两个数据。可以用来处理一对二的数据情况
核心代码:
reviews = pd.read_csv('pfc.csv')
#取出需要展示的列名
cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm','Fandango_Ratingvalue', 'Fandango_Stars']
norm_reviews = reviews[cols]
#获取文件中的数据,根据clos中指定的列进行读取相应的数据
fig, ax = plt.subplots()
#绘制散点图
ax.scatter(norm_reviews['Fandango_Ratingvalue'],norm_reviews['RT_user_norm'])
#xy轴的对应数据
效果图
5.直方图
直方图应用比较灵活,个人感觉适合处理数据较多当x轴分布的点多的时候可以使用方便观察某一个区间直方图的绘制使用了hist函数,其中的一个参数bins表示区间的距离
核心代码:
reviews = pd.read_csv('pfc.csv')
cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm','Fandango_Ratingvalue']
norm_reviews = reviews[cols]
#对评分进行数量统计
fandango_distribution =norm_reviews['Fandango_Ratingvalue'].value_counts()
imdb_distribution = norm_reviews['IMDB_norm'].value_counts()
#根据排序索引
fandango_distribution = fandango_distribution.sort_index()
imdb_distribution = imdb_distribution.sort_index()
fig, ax = plt.subplots()
# 绘制直方图
#bins:区间个数,缺省默认10个
ax.hist(norm_reviews['Fandango_Ratingvalue'], bins=20)
#ax.hist(norm_reviews['Fandango_Ratingvalue'], range(4,5), bins=20)
#设置y轴坐标取值范围
#ax.set_ylim(0,50)
效果图
6.盒图
这个是第一次听说但是功能很强大显示出一组数据的最大值、最小值、中位数、下四分位数及上四分位数。
盒图的绘制使用了boxplot函数
核心代码:
reviews = pd.read_csv('fandango_score_comparison.csv')
cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm','Fandango_Ratingvalue']
norm_reviews = reviews[cols]
num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm','Fandango_Ratingvalue']
fig, ax = plt.subplots()
#绘制盒图
ax.boxplot(norm_reviews[num_cols].values)
ax.set_xticklabels(num_cols, rotation=90)
ax.set_ylim(0,5)
效果图
由于公众号文章的原因只能将核心代码展现,如果需要可以关注留言!
领取专属 10元无门槛券
私享最新 技术干货