Python作为一种高级编程语言,其绘图库丰富,包括了绘制折线图、散点图、饼图、直方图、箱线图等各种类型图表,成为科学计算、数据可视化领域不可或缺的工具。Python绘图的意义不仅在于美观的图表展示,更是通过数据可视化,实现对大数据的探索分析、结论提炼和决策分析。
在Python数据分析中,数据清洗是非常重要的一步,它涉及到对原始数据进行清洗、处理和转换,以便更好地进行后续的数据分析和可视化。以下是一些常见的数据清洗方法:
- 缺失值处理:对于缺失的数据,可以采用插值、删除或填充等方法进行处理。常用的插值方法有线性插值、多项式插值等。如果缺失值较多,可以考虑删除含有缺失值的行或列。
- 异常值处理:对于异常值,可以采用删除、替换或基于统计的方法进行处理。例如,可以使用箱线图等方法识别异常值,然后进行删除或替换。
- 数据类型转换:对于不同类型的数据,需要进行转换以便进行后续的分析和可视化。例如,将分类数据转换为数值型数据,或将日期数据转换为时间序列数据。
在Python数据分析中,常用的图形绘制库包括matplotlib:matplotlib是Python中最常用的绘图库之一,支持多种绘图类型和风格,包括折线图、散点图、直方图、箱线图等。它的优点是功能强大、灵活度高,但同时也需要较多的代码来实现绘图。
一、折线图
优势:折线图能够查看时间序列数据的波动趋势
数据收集方式:通过实验、观测或调查问卷等方式收集时间序列数据,例如温度、销售额等
折线图(Line Chart):用于展示数据随时间或其他变量的变化趋势。可以使用matplotlib库中的plot函数来绘制折线图。
import matplotlib.pyplot as plt
# 示例数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 绘制折线图
plt.plot(x, y)
plt.show()
比如:
import pandas as pd
import matplotlib.pyplot as plt
df_stock = pd.read_excel('E:/wst/股价数据.xlsx')
df_stock
# 升序排序
df_stock = df_stock.sort_values(by='date').reset_index(drop=True)
df_stock
# 数据准备
x = df_stock['date']
y1 = df_stock['close']
y2 = df_stock['ma20']
# 画折线图
plt.rcParams['font.family'] = 'SimHei' # 解决中文乱码
plt.plot(
x,
y1,'-',
y2,'--'
)
plt.title('股票的收盘价(close)和20日均线(ma20)折线图')
# 只倾斜显示部分x轴刻度
plt.xticks([0,100,200,300,400,500,600],rotation=15)
plt.show()
运行结果:
二、散点图
优势:能够查看两个序列数据之间的相关关系
数据收集方式:可以通过实验、观测或调查问卷等方式收集两个变量的数据,例如身高和体重、广告和销售额等
散点图(Scatter Plot):用于展示两个变量之间的关系,以及数据点的分布情况。可以使用matplotlib库中的scatter函数来绘制散点图。
import matplotlib.pyplot as plt
# 示例数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 绘制散点图
plt.scatter(x, y)
plt.show()
比如:
import pandas as pd
import matplotlib.pyplot as plt
# 画图
plt.rcParams['font.family'] = 'SimHei' # 解决中文乱码
plt.scatter(
df_book['浏览量'],
df_book['成交商品件数'],
s = 1
)
plt.xlabel('浏览量')
plt.ylabel('成交数量')
plt.xlim(0,5000)
plt.ylim(0,500)
plt.show()
运行结果:
三、直方图
优势:能够查看序列数据的分布情况
数据收集方式:可以通过实验、观测或调查问卷等方式收集连续变量的数据,例如考试成绩、用户年龄等。
直方图(Histogram):用于展示数据的分布情况,特别是连续变量的概率分布。可以使用matplotlib库中的hist函数来绘制直方图。
import matplotlib.pyplot as plt
import numpy as np
# 示例数据
data = np.random.randn(1000)
# 绘制直方图
plt.hist(data, bins=30)
plt.show()
比如:
import pandas as pd
import matplotlib.pyplot as plt
df_air = pd.read_excel('../数据集/航空公司数据.xlsx')
df_air
# 画图
plt.rcParams['font.family'] = 'SimHei' # 解决中文乱码
min_age = int(df_air['年龄'].min()) # 最小客户年龄
max_age = int(df_air['年龄'].max()) # 最大客户年龄
plt.hist(
df_air['年龄'],
bins = [i for i in range(min_age,max_age,5)] # 以5为组距构造一个年龄区间列表
)
plt.title('用户年龄分布图')
plt.xlabel('年龄区间')
plt.ylabel('人数')
plt.show()
运行结果:
四、箱线图
优势:能够查看序列数据的分布情况。通过最小值、最大值和四分位数来表示数据分布;箱线图通过圆点来显示序列的异常值
数据收集方式:可以通过实验、观测或调查问卷等方式收集一组数据,例如不同地区的销售额、不同学校的考试成绩等。
箱线图(Box Plot):用于展示一组数据的分布情况,特别是中位数、四分位数等统计指标。可以使用matplotlib库中的boxplot函数来绘制箱线图。
import matplotlib.pyplot as plt
import numpy as np
# 示例数据
data = np.random.randn(1000)
# 绘制箱线图
plt.boxplot(data)
plt.show()
比如:
import pandas as pd
import matplotlib.pyplot as plt
# 查看年龄序列中的空值
df_air['年龄'].isnull().sum()
# 数据准备,剔除空值
x1 = df_air.query('性别=="男"')['年龄'].dropna()
x2 = df_air.query('性别=="女"')['年龄'].dropna()
# 画图
plt.rcParams['font.family'] = 'SimHei' # 解决中文乱码
plt.boxplot(
[x1,x2],
vert = False,
labels = ['男','女'],
whis = 3 # 放宽上下限的宽度,减少异常值的定义,尝试注释本行运行查看差异
)
plt.show()
运行结果:
注意事项:
- 在选择图形时,要根据数据的特点和需求进行选择,不同的图形适用于不同的数据类型和需求。
- 在绘制图形时,要注意图形的美观性和可读性,例如设置合适的颜色、标签、标题等,以便更好地展示数据和分析结果。
- 在进行数据分析和可视化时,要保持客观性和准确性,避免出现误导性的结果和结论。
总之,Python数据分析中常见图形及绘制是数据分析的重要组成部分,通过掌握各种常见图形及其绘制方法,可以提高数据分析和可视化的效率和质量,为决策提供有力的支持。