🐳 我正在和鲸社区参加“商业数据分析训练营活动” https://www.heywhale.com/home/competition/6487de6649463ee38dbaf58b ,以下是我的学习笔记:
学习主题:matplotlib绘图
日期:2023.9.13
关键概念/知识点:
- 创建图形和子图
- 自定义图形样式
- 添加标题、轴标签和图例
- 直方图
- 散点图
- 气泡图
- 柱形图
掌握的新函数/方法:
- plt.figure()
- fig.add_subplot()
- ax.plot(x,y,linestyle = ‘–’, color = ‘red’, marker = ‘o’)
- plt.title(‘Title’)
- plt.xlabel(‘X-label’)
- plt.ylabel(‘Y-label’)
- ax.legend([‘Line 1’, ‘Line 2’])
- ax.hist(x, bins)
- ax.scatter(x, y)
- ax.scatter(x, y, s = df[‘Income’])
- ax.bar(x, y)
- ax.plot(x, y)
代码举例
创建图形和子图:
matplotlib中最基本的绘图单位是图形(Figure)和子图(Axes)。图形可以看作是一个画布,而子图则是画布上的绘图区域。
# 创建一个名为fig的画布,并向画布添加一个子图ax
# add_subplot() 中传递的参数 1, 1, 1 表示该图形对象应包含一个子图,该子图应在 1x1 的网格中排列,并且此子图是该网格中的第一个子图
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
自定义图形样式:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
sales = [100, 150, 120, 180, 210, 170]
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
# linestyle:表示折线图中线条的样式,例如'-'表示实线,'--'表示虚线
# color:表示线条或散点的颜色,可以使用颜色名称(如'red')或十六进制RGB值(如'#FF0000')
# marker:表示散点图中数据点的形状,例如'o'表示圆点、's'表示正方形
ax.plot(months, sales, linestyle = '--', color = 'red', marker = 'o')
plt.show()
添加标题、轴标签:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
sales = [100, 150, 120, 180, 210, 170]
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
ax.plot(months, sales, linestyle = '--', color = 'red', marker = 'o')
# 添加标题
plt.title("某公司上半年销售额变化折线图")
# 添加x轴标签
plt.xlabel("月份")
#添加y轴标签
plt.ylabel("销售额")
plt.show()
员工年龄分布直方图:
# 载入pandas、matplotlib、numpy库
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# 导入数据
df = pd.read_excel('/home/mw/input/data_analysis8875/al3-1.xls')
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1) # 在子图上绘制直方图
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.hist(df['Age'],bins=[25,30,35,40,45])# 设置图形标题
plt.title('某公司员工年龄分布直方图')
# 设置x轴标签
plt.xlabel('年龄')
# 设置y轴标签
plt.ylabel('人数') # 向plt.xticks()传入参数range(25, 50, 5)表示x轴数值范围从25到50,每隔5个单位显示一个数值
plt.xticks(range(25,50,5))# 调用plt.show()函数显示图形
plt.show()
员工年龄与销售情况散点图 :
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np df = pd.read_excel('/home/mw/input/data_analysis8875/al3-1.xls') # 创建一个图形对象
fig = plt.figure() # 向图形对象添加一个子图
ax = fig.add_subplot(1,1,1) # 在子图上绘制散点图
ax.scatter(df['Age'],df['Sales']) # 设置图形标题
plt.title('某公司员工年龄与销售额散点图') # 设置x轴、y轴标签
plt.xlabel('年龄')
plt.ylabel('销售额') # 显示图形
plt.show()
员工年龄与销售情况气泡图 :
scatter( )函数中的s参数提供了一种便捷的方法,可以用来对点的大小进行控制,进而实现用点的大小来反映收入的大小。
# 导入数据
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_excel('/home/mw/input/data_analysis8875/al3-1.xls') # 创建一个图形对象并添加子图
fig = plt.figure()
ax = fig.add_subplot(1,1,1) # 在子图上绘制气泡图
ax.scatter(df['Age'],df['Sales'],s = df['Income']) # 设置图形标题
plt.title('某公司员工年龄与销售额及收入气泡图') # 设置x轴、y轴标签
plt.xlabel('年龄')
plt.ylabel('销售额') # 显示图形
plt.show()
员工性别销售情况柱形图 :
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np# 使用groupby()函数按性别Gender对员工进行分组,将分组后数据命名为gender_group
df = pd.read_excel('/home/mw/input/data_analysis8875/al3-1.xls')
gender_group = df.groupby('Gender') # 对分组后数据进行操作,将销售量Sales进行加总,保存为var
var = gender_group['Sales'].sum() fig = plt.figure()
ax = fig.add_subplot(1,1,1)# 对性别进行分组后,var中index代表性别属性,values代表销售额
ax.bar(var.index,var.values)plt.title('某公司员工性别与销售情况柱形图')
plt.xlabel('性别')
plt.ylabel('销售额')
plt.show()
关键总结:
通过强大的Python语言和神奇的matplotlib库,将枯燥的商业数据变成绚丽多彩的图形,让数据跃然纸上,为企业决策提供更直观、更清晰的依据。学会运用matplotlib库为绘制折线图、柱状图、散点图等图形,利用可视化的图形去展示数据,解决例如某公司员工年龄分布、年龄与销售情况以及性别与销售情况等一系列问题。
问题/困惑:
在分组或者多条件情形下,绘制图形。
下一步计划:
通过练习掌握matplotlib库,绘制出各种多样的图形。
参考资料/相关资源链接:
Pandas文档:https://pandas.pydata.org/docs/
matplotlib文档:https://www.matplotlib.org.cn/intro/