数据可视化jupyter
时间: 2024-12-30 17:17:34 浏览: 9
### 如何在 Jupyter Notebook 中实现数据可视化
#### 安装必要的库
为了能够在 Jupyter Notebook 中进行数据可视化,首先需要确保已经安装了一些常用的 Python 数据可视化库。这些库包括 `matplotlib`、`seaborn` 和 `pandas` 等。
```bash
pip install matplotlib seaborn pandas ipyvolume scikit-learn jupyterlab
```
#### 创建并启动 Jupyter Notebook
完成上述依赖项的安装之后,在命令行输入如下指令来启动 Jupyter Notebook:
```bash
jupyter notebook
```
这将会打开一个新的浏览器窗口或标签页,默认情况下会显示当前工作目录下的文件列表以及一些用于创建新笔记本的选项。
#### 导入所需模块与加载数据集
一旦进入到了新的Notebook页面内,则可以开始编写Python代码来进行绘图操作了。下面是一个简单的例子,展示了如何导入所需的包并将鸢尾花(iris)数据集载入到内存中以便后续处理[^1]。
```python
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
import seaborn as sns
# 加载鸢尾花数据集
data = load_iris()
df = pd.DataFrame(data.data, columns=data.feature_names)
df['species'] = pd.Categorical.from_codes(data.target, data.target_names)
# 查看前几行记录
print(df.head())
```
#### 制作基本图表
接下来的部分将介绍几种不同类型的基础图形制作方法,其中包括但不限于散点图(scatter plots),直方图(histograms), 条形图(bar charts)等。
##### 散点图 (Scatter Plot)
利用Seaborn库中的pairplot函数能够快速生成多变量间的两两对比关系图,这对于初步观察各个属性间是否存在线性关联非常有用。
```python
sns.pairplot(df, hue='species')
plt.show()
```
对于更具体的单个特征之间比较而言,可以直接调用Matplotlib提供的scatter方法来自定义X轴Y轴所对应的字段名即可得到相应的二维分布情况[^3]。
```python
plt.figure(figsize=(8, 6))
plt.scatter(x=df["petal length (cm)"], y=df["petal width (cm)"], c=np.array([color_map[i] for i in df.species]), marker="o", edgecolors='w', linewidth=0.5)
plt.title('Petal Length vs Petal Width by Species')
plt.xlabel('Petal Length(cm)')
plt.ylabel('Petal Width(cm)')
plt.grid(True)
plt.colorbar(label='Species')
plt.show()
color_map = {'setosa': 'r', 'versicolor': 'g', 'virginica': 'b'}
```
##### 直方图 (Histogram)
当想要查看某一特定数值型字段在整个样本集中取值范围内的频率分布状况时,就可以考虑采用柱状统计图的形式展现出来;这里以Sepal Length为例说明具体做法。
```python
plt.hist(df['sepal length (cm)'], bins=20, color='#F2AB6D', rwidth=0.9)
plt.title('Distribution of Sepal Length')
plt.xlabel('Sepal Length(cm)')
plt.ylabel('Frequency')
plt.show()
```
##### 条形图 (Bar Chart)
如果希望表达分类变量的数量差异或者是均值大小的话,那么条形图无疑是最直观的选择之一。此处选取三种不同的花卉类别作为分组依据,并分别计算其花瓣宽度(Petal Width)上的平均表现。
```python
mean_petal_width_by_species = df.groupby(['species']).agg({'petal width (cm)': ['mean']}).reset_index()
mean_petal_width_by_species.columns = [" ".join(col).strip() for col in mean_petal_width_by_species.columns.values]
fig, ax = plt.subplots()
ax.bar(mean_petal_width_by_species.index, mean_petal_width_by_species['petal width (cm) mean'])
ax.set_xticks(range(len(mean_petal_width_by_species)))
ax.set_xticklabels(mean_petal_width_by_species['species'])
for index,data in enumerate(mean_petal_width_by_species['petal width (cm) mean']):
plt.text(x=index , y =data+0.01 , s=f"{round(data,2)}" , fontdict=dict(fontsize=10))
plt.title('Average Petal Width By Species')
plt.xlabel('Species')
plt.ylabel('Mean Petal Width(cm)')
plt.show()
```
#### 高级交互式3D可视化
除了传统的静态图像外,借助于 IPyVolume 这样的第三方扩展插件还能轻松构建起具备高度动态特性的三维场景视图,尤其适合用来呈现那些具有明显空间维度的信息源,如分子结构或是地形地貌等等[^2]。
```python
import ipyvolume as ipv
ipv.quickquiver(*np.random.randn(3, 250)*2, size=5, size_selected=7, selector=True)
ipv.show()
```
阅读全文