折线图:
plt.plot(x,y): x,y分别为x和y轴数据
# 添加数值标注
import pandas as pd
import matplotlib.pyplot as pltimport pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
stock_df = pd.read_csv('../data/stock_df.csv')
plt.figure(figsize = (10,5))
# 绘制贵州茅台每日股价收盘价折线图
plt.plot(stock_df.Date, stock_df['Close'], label = '收盘价')
# 设置图像标题为'贵州茅台每日股价折线图'
plt.title('贵州茅台每日股价折线图')
# 将x轴刻度标签旋转60度
plt.xticks(rotation = 60)
# 显示图例
plt.legend()
plt.show()
柱形图:
plt.bar(x,height,width,color) :x轴标签,height每个标签对应的高度
menu = pd.read_csv('../data/menu.csv')
plt.figure(figsize = (20,8))
nutri_name = ['Total Fat (% Daily Value)','Saturated Fat (% Daily Value)',
'Cholesterol (% Daily Value)','Sodium (% Daily Value)','Carbohydrates (% Daily Value)',
'Vitamin A (% Daily Value)','Calcium (% Daily Value)','Iron (% Daily Value)']
nutri = menu.loc[0 , nutri_name]
plt.bar(nutri_name, nutri, width=0.5, color=['b','r','g','y','c','m','b','k'])
for i in nutri.index:
# TODO
# 为柱形添加数值标注,使用plt.text()函数,标注内容为nutri中的数值,ha设置为'center',va设置为'bottom'
plt.text(i,nutri[i],nutri[i], ha='center',va='bottom')
plt.xticks(rotation = 10)
plt.title('烟肉蛋麦满分营养成分每日推荐摄入量百分比柱形图')
plt.show()
直方图:
绘制直方图使用plt.hist()函数:
plt.hist(data, bins, facecolor, edgecolor)
# 选择 menu 数据集中的 Calories 列,将数据记录为 calories
calories = menu.Calories
# 设置直方图的组数,这里设置为从最小值开始每加100为一组
group = int((max(calories)-min(calories))/100)
# 绘制直方图, 矩形填充色设置为'blue',边框颜色设置为'black'
plt.hist(calories, group, facecolor="blue", edgecolor="black")
# 图像标题设置为'麦当劳菜单卡路里含量分布直方图'
plt.title('麦当劳菜单卡路里含量分布直方图')
plt.show()
data:绘图用到的数据
bins:直方图的条形数目,
facecolor:矩形的填充颜色
edgecolor:条形的边框颜色
直方图和柱形图的区别:
- 柱形图中用柱形的高度表示各类别的数值,横轴表示类别,宽度是固定的;
直方图是用矩形的高度表示每一组的频数或频率,宽度则表示各组的组距,因此其高度与宽度均有意义。
2.直方图主要用于展示连续型数值型数据,所以各矩形通常是连续排列的;而柱形图主要用于展示分类型数据,常常是分开排列的。
饼图:
plt.pie(x, labels, autopct, shadow, startangle)
x:传入绘制用到的数据;
labels:用于设置饼图中每一个扇形外侧的显示说明文字;
autopct:用于设置饼图内百分比数据,可以使用format字符串或者format function,例如’%.1f%%’指小数点后保留1位小数;shadow:表示是否在饼图下面画阴影,默认值:False,即不画阴影;
startangle:设置起始绘制角度,默认图是从x轴正方向逆时针画起,如果设定startangle=90,则从y轴正方向画起。
# 按照类型变量'Category'对原数据分组,使用groupby函数,然后计算每组数据的数据量,使用size()函数,将输出的数据记录为num
num = menu.groupby('Category').size()
# TODO
# 绘制麦当劳各类型菜品数饼图,labels设置为num.index,每个扇形内百分比数据格式设置为:'%.1f%%', 起始绘制角度设置为190度
plt.pie(num,labels = num.index, autopct='%.1f%%',shadow=False,startangle=190)
箱线图:plt.boxplot(data, labels)
nutri_name = ['Total Fat (% Daily Value)','Saturated Fat (% Daily Value)',
'Cholesterol (% Daily Value)','Sodium (% Daily Value)','Carbohydrates (% Daily Value)',
'Vitamin A (% Daily Value)','Calcium (% Daily Value)','Iron (% Daily Value)']
# TODO
# 根据nutri_name列名称索引所需数据,将输出数据记录为nutri_data
nutri_data = menu[nutri_name]
# TODO
# 绘制箱线图,plt.boxplot默认按行数据绘制箱线图,所以data参数传入nutri_data的转置矩阵:nutri_data.T,labels设置为nutri_name
plt.boxplot(nutri_data.T, labels = nutri_name )
箱线图,也称为盒须图或者盒式图,是一种用作显示一组数据分散情况的统计图,它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较,图像中可以显示一组数据的最大值、最小值、中位数、及上下四分位数
矩形盒两端的位置分别对应数据的上下四分位数也就是Q1和Q3,所以矩形盒的长度Q3-Q1也叫作四分位距,或者四分位差,用IQR表示。
在数据分析中,往往会重点考虑数据列中中间部分的数字,通常会将前百分之二十五和后百分之二十五的数据切除掉,保留从Q1到Q3之间的数据。
矩形盒内部的线段表示中位数Q2。
从矩形盒的两端延伸出两条线,线的端点分别为Q1-1.5IQR和Q3+1.5IQR,这两个端点叫作异常值截断点,称其为内限。
落在内限之外的点为数据的异常值,所以这两个端点也表示在不考虑异常值的情况下数据的最大值和最小值。
Q1-3IQR和Q3+3IQR处的两个端点,称为外限,落在内限和外限之间的点被称作温和异常值,外限之外的异常值叫作极端异常值。
pandas也可直接绘制箱线图:直接调用boxplot()