python可视化入门代码,简单易懂
首先,你需要安装必要的库。主要使用:· Matplotlib - 最基础的可视化库· Seaborn - 基于Matplotlib的统计可视化库· Pandas - 数据处理。
第一步:环境准备
首先,你需要安装必要的库。主要使用:
· Matplotlib - 最基础的可视化库
· Seaborn - 基于Matplotlib的统计可视化库
· Pandas - 数据处理
第二步:第一个简单图表
让我们从最简单的折线图开始:
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
x = np.linspace(0, 10, 100) # 0到10之间的100个点
y = np.sin(x) # 正弦函数
# 创建图表
plt.figure(figsize=(10, 5)) # 设置图形大小
plt.plot(x, y, label='sin(x)') # 绘制折线图
plt.title('简单的正弦函数图') # 标题
plt.xlabel('X轴') # X轴标签
plt.ylabel('Y轴') # Y轴标签
plt.legend() # 显示图例
plt.grid(True) # 显示网格
plt.show() # 显示图形
第三步:多种基础图表
1. 散点图
# 创建随机数据
np.random.seed(42) # 设置随机种子,保证结果可重复
x = np.random.randn(100)
y = np.random.randn(100)
colors = np.random.rand(100)
sizes = 100 * np.random.rand(100)
plt.figure(figsize=(10, 6))
plt.scatter(x, y, c=colors, s=sizes, alpha=0.6)
plt.title('散点图示例')
plt.xlabel('X值')
plt.ylabel('Y值')
plt.colorbar() # 显示颜色条
plt.show()
2. 柱状图
# 柱状图数据
categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 56, 12, 67]
plt.figure(figsize=(10, 6))
plt.bar(categories, values, color=['red', 'blue', 'green', 'orange', 'purple'])
plt.title('柱状图示例')
plt.xlabel('类别')
plt.ylabel('数值')
plt.show()
3. 直方图
# 生成正态分布数据
data = np.random.normal(0, 1, 1000)
plt.figure(figsize=(10, 6))
plt.hist(data, bins=30, alpha=0.7, color='skyblue', edgecolor='black')
plt.title('数据分布直方图')
plt.xlabel('数值')
plt.ylabel('频数')
plt.show()
第四步:Seaborn 数据可视化
Seaborn基于Matplotlib,提供了更美观的默认样式和更高级的统计图表。
1. 首先加载示例数据集
import seaborn as sns
import pandas as pd
# 加载内置数据集
tips = sns.load_dataset('tips')
print("数据集前5行:")
print(tips.head())
print("\n数据集信息:")
print(tips.info())
2. Seaborn 基础图表
# 设置样式
sns.set_style("whitegrid")
# 箱线图
plt.figure(figsize=(10, 6))
sns.boxplot(x='day', y='total_bill', data=tips)
plt.title('每天消费金额的箱线图')
plt.show()
3. 小提琴图
plt.figure(figsize=(10, 6))
sns.violinplot(x='day', y='total_bill', hue='sex', data=tips, split=True)
plt.title('按性别分组的小提琴图')
plt.show()
4. 热力图
# 创建相关性矩阵
corr = tips.corr()
plt.figure(figsize=(8, 6))
sns.heatmap(corr, annot=True, cmap='coolwarm', center=0)
plt.title('变量相关性热力图')
plt.show()
5. 成对关系图
# 选择数值列进行成对分析
numeric_tips = tips.select_dtypes(include=['float64', 'int64'])
sns.pairplot(numeric_tips)
plt.suptitle('变量成对关系图', y=1.02)
plt.show()
第五步:Pandas 简易可视化
1. 基础线图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 创建简单数据
df = pd.DataFrame({
'A': np.random.randn(100).cumsum(),
'B': np.random.randn(100).cumsum() + 10,
'C': np.random.randn(100).cumsum() + 5
})
# 一行代码绘制所有列的线图
df.plot(figsize=(10, 6), title='三组数据趋势图')
plt.show()
2. 柱状图
# 创建分类数据
data = {
'苹果': 25,
'香蕉': 30,
'橙子': 20,
'葡萄': 35
}
# 转换为DataFrame并绘图
fruit_df = pd.DataFrame(list(data.items()), columns=['水果', '销量'])
fruit_df.set_index('水果')['销量'].plot(kind='bar', color='lightblue')
plt.title('水果销量柱状图')
plt.ylabel('销量')
plt.show()
3. 直方图
# 生成随机数据
scores = pd.DataFrame({'分数': np.random.normal(75, 10, 1000)})
# 绘制直方图
scores['分数'].plot(kind='hist', bins=20, alpha=0.7, color='green')
plt.title('分数分布直方图')
plt.xlabel('分数')
plt.show()
4. 饼图
# 市场份额数据
market_share = pd.Series({
'公司A': 35,
'公司B': 25,
'公司C': 20,
'公司D': 15,
'其他': 5
})
# 绘制饼图
market_share.plot(kind='pie', autopct='%1.1f%%', figsize=(8, 8))
plt.title('市场份额分布')
plt.ylabel('') # 隐藏y轴标签
plt.show()
5. 散点图
# 创建身高体重数据
height_weight = pd.DataFrame({
'身高': np.random.normal(170, 10, 50),
'体重': np.random.normal(65, 15, 50)
})
# 散点图
height_weight.plot(kind='scatter', x='身高', y='体重',
alpha=0.6, color='red', figsize=(8, 6))
plt.title('身高体重关系散点图')
plt.grid(True)
plt.show()
6. 箱线图
# 创建多组数据
groups = pd.DataFrame({
'组1': np.random.normal(0, 1, 100),
'组2': np.random.normal(2, 1.5, 100),
'组3': np.random.normal(-1, 0.8, 100)
})
# 箱线图
groups.plot(kind='box', figsize=(8, 6))
plt.title('三组数据分布箱线图')
plt.ylabel('数值')
plt.show()
7. 面积图
# 创建时间序列数据
months = pd.date_range('2023-01', periods=12, freq='M')
revenue = pd.DataFrame({
'产品A': np.random.randint(100, 200, 12),
'产品B': np.random.randint(80, 150, 12),
'产品C': np.random.randint(50, 120, 12)
}, index=months)
# 面积图
revenue.plot(kind='area', alpha=0.6, figsize=(10, 6))
plt.title('月度收入面积图')
plt.ylabel('收入')
plt.show()
更多推荐


所有评论(0)