跟我一起学点数据分析 -- 第五天:数据可视化(matplotlib部)
前文回顾
说实话,这两天我没有写博客,并不是去休息了,是在实战。
但是我实战为什么这么久?因为学的不扎实。
为什么学的不扎实,我觉得我不负全责。
反正总结一点就是,这个系列我会全部推翻重写。
然后,买课之前一定要先加QQ群,跟老师搭上话,不然别交钱。
数据集
这里我们获取seaborn的自带数据集,我选:anscombe,这个数据集还是挺出名的。
import seaborn as sns
anscombe = sns.load_dataset('anscombe')
print(anscombe)
- 1
- 2
- 3
- 4
- 5
当然,不知道什么原因,不让我下。
网上也不好找,还要我去注册个码云。
过两天我在我的侧栏挂个公众号,你们来回复“seaborn测试数据集”就好啦。
然后让我们来了解一下这个数据集哈:但当涉猎
(数据集不止这一个,所以,最好还是下载一整包)
matplotlib绘图入门
为什么先讲matplotlib呢?因为你会发现后面的不论是seaborn还是pandas都离不开这个。
而为什么又说只是个入门呢?因为这个完全可以独立写好几篇博客了,东西实在博大精深了。
matplotlib,是Python的基本绘图库。
好用的很。
来我用给你们看一下:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('anscombe.csv')
df_1 = df[df['dataset'] == 'I']
plt.plot(df_1['x'],df_1['y'])
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
草率了点哈,连个颜色区分度都没有。
默认情况下哈,plot是用线的。如果你想用点的话,可以传个参:
(这让我想起了当初的MATLAB考试)
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('anscombe.csv')
df_1 = df[df['dataset'] == 'I']
plt.plot(df['x'],df['y'],'*') # 也不是说什么都可以的,要不你换个‘¥’试试?
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
绘制多图
matplotlib有个比较神奇的地方,它支持一张大图上有很多个小图组成。
看好。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('anscombe.csv')
df_1 = df[df['dataset'] == 'I']
df_2 = df[df['dataset'] == 'II']
df_3 = df[df['dataset'] == 'III']
df_4 = df[df['dataset'] == 'IV']
fig = plt.figure() # 创建画布,用于存放子图
# 将画布分为两行两列
axes1 = fig.add_subplot(2,2,1) #(坐标(1,1))
axes2 = fig.add_subplot(2,2,2) #(坐标(1,2))
axes3 = fig.add_subplot(2,2,3) #(坐标(2,1))
axes4 = fig.add_subplot(2,2,4) #(坐标(2,2))
# 调用各个轴的方法绘图
axes1.plot(df_1['x'],df_1['y'],'+')
axes2.plot(df_2['x'],df_2['y'],'+')
axes3.plot(df_3['x'],df_3['y'],'+')
axes4.plot(df_4['x'],df_4['y'],'+')
# 向各个图中添加小标题
axes1.set_title('dataset_1')
axes2.set_title('dataset_2')
axes3.set_title('dataset_3')
axes4.set_title('dataset_4')
# 为整幅图添加一个大标题
fig.suptitle('Anscombe Data')
# 使用紧凑布局
fig.tight_layout()
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
还可以向每个图设置坐标轴名字,set_xlabel() 和 set_ylabel()。
matplotlib绘制统计图
这里我们选用另一个数据集:tips
直方图
哎,经过我十几分钟的苦战,还是没能给每个柱子配上个颜色。
那就只能先这样了:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('tips.csv')
fig = plt.figure()
axes1 = fig.add_subplot(1,1,1)
axes1.hist(df['total_bill'],bins = 10,color = 'g' )
axes1.set_title('Histogram of Total Bill')
axes1.set_xlabel('Frequency')
axes1.set_ylabel('Total Bill')
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
散点图
这组数据啊,我本来以为是两组数据,还准备给它分一下颜色。研究了一会儿,发现它就是一组数据而已。。。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('tips.csv')
scatter_plot = plt.figure()
axes1 = scatter_plot.add_subplot(1,1,1)
axes1.scatter(df['total_bill'],df['tip'],color = 'g' )
axes1.set_title('Scatterplot of Total Bill vs Tip')
axes1.set_xlabel('Frequency')
axes1.set_ylabel('Total Bill')
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
箱线图
说真的,这个图你叫我看我也看不懂:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('tips.csv')
boxplot = plt.figure()
axes1 = boxplot.add_subplot(1,1,1)
axes1.boxplot( # 箱线图的第一个参数是数据 # 由于要绘制多块数据,多以要把每块数据放到列表中(真是麻烦) [ df[df['sex'] == 'Female']['tip'], df[df['sex'] == 'Male']['tip'] ], labels = ['Female','Male']
)
axes1.set_title('Boxplot of Tips by Sex')
axes1.set_xlabel('Sex')
axes1.set_ylabel('Tips')
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
多变量数据
多变量数据的区分就要看咱个人的聪明才智了。
import pandas as pd
import matplotlib.pyplot as plt
def record_sex(sex): if sex == 'Female': return 0 else: return 1
df = pd.read_csv('tips.csv')
df['sex_color'] = df['sex'].apply(record_sex)
scatter_plot = plt.figure()
axes1 = scatter_plot.add_subplot(1,1,1)
axes1.scatter( x = df['total_bill'], y = df['tip'], s = df['size']*10, c = df['sex_color'], alpha = 0.5
)
axes1.set_title('Total Bill vs Tip Colored by Sex and Sized by Size')
axes1.set_xlabel('Total Bill')
axes1.set_ylabel('Tips')
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
色图
接下来要放色图了啊,大家做好心理准备。
常用颜色
‘b’ # 蓝色(blue)
‘g’ # 绿色(green)
‘r’ # 红色(red)
‘c’ # 青色(cyan)
‘m’ # 品红(magenta)
‘y’ # 黄色(yellow)
‘k’ # 黑色(black)
‘w’ # 白色(white)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
更多颜色
渐变色
混色
你要问我怎么用,那我也没用过,先存着。
常用图例
‘.’ # 点(point marker)
‘,’ # 像素点(pixel marker)
‘o’ # 圆形(circle marker)
‘v’ # 朝下三角形(triangle_down marker)
‘^’ # 朝上三角形(triangle_up marker)
‘<‘ # 朝左三角形(triangle_left marker)
‘>’ # 朝右三角形(triangle_right marker)
‘1’ # (tri_down marker)
‘2’ # (tri_up marker)
‘3’ # (tri_left marker)
‘4’ # (tri_right marker)
‘s’ # 正方形(square marker)
‘p’ # 五边星(pentagon marker)
‘*’ # 星型(star marker)
‘h’ # 1号六角形(hexagon1 marker)
‘H’ # 2号六角形(hexagon2 marker)
‘+’ # +号标记(plus marker)
‘x’ # x号标记(x marker)
‘D’ # 菱形(diamond marker)
‘d’ # 小型菱形(thin_diamond marker)
‘|’ # 垂直线形(vline marker)
‘_’ # 水平线形(hline marker)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
一个matplotlib写着写着就这么多了,seaborn、pandas再加上来。。
pyechart要是再上来。
emmm,这篇先到这儿吧就。
文章来源: lion-wu.blog.csdn.net,作者:看,未来,版权归原作者所有,如需转载,请联系作者。
原文链接:lion-wu.blog.csdn.net/article/details/112122718
- 点赞
- 收藏
- 关注作者
评论(0)