1. Numpy
NumPy是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,也针对数组运算提供了大量的数学函数库。NumPy的核心数据类型是ndarray
(n-dimensional array),它描述了相同类型的n维数组。相对于Python自带的List列表,NumPy数组的优势在于其支持向量化操作。
1.1 NumPy数组的创建
可以通过以下方式创建NumPy数组:
import numpy as np
# 从Python列表创建numpy数组
list_data = [1, 2, 3, 4, 5]
arr_data = np.array(list_data)
print(arr_data)
# 创建指定大小的数组
zeros = np.zeros((3, 3))
print(zeros)
ones = np.ones((2, 3))
print(ones)
# 随机数组
rand = np.random.rand(2, 5)
print(rand)
1.2 数组访问和操作
NumPy数组可以通过下标、切片等方式进行访问和操作。
import numpy as np
# 访问数组中的元素
arr = np.array([1, 2, 3, 4, 5])
print(arr[0]) # 1
print(arr[-1]) # 5
# 对数组进行切片
print(arr[1:3]) # [2, 3, 4]
# 修改数组中的元素
arr[0] = 9
print(arr)
# 数组运算
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr1 + arr2) # [5, 7, 9]
arr3 = np.array([[1, 2, 3], [4, 5, 6]])
print(np.sum(arr3)) # 21,计算数组中所有元素的和
print(np.sum(arr3, axis=0)) # [5, 7, 9],计算数组每列的和
print(np.sum(arr3, axis=1)) # [6, 15],计算数组每行的和
2. Pandas
Pandas是一个Python软件库,用于数据操作和分析。它提供了快速、灵活和富有表现力的数据结构,旨在使数据清洗、转换、分析和可视化变得简单而直观。
2.1 Pandas数据结构
Pandas包含两种基本的数据结构:Series和DataFrame。
import pandas as pd
# 创建Series
color = pd.Series(['blue', 'red', 'green', 'yellow'])
print(color)
name = pd.Series(['Alice', 'Bob', 'Charlie', 'David'])
age = pd.Series([25, 32, 18, 47])
gender = pd.Series(['F', 'M', 'M', 'M'])
# 创建DataFrame
df = pd.DataFrame({'name': name, 'age': age, 'gender': gender})
print(df)
2.2 数据读取和筛选
可以使用Pandas读取各种格式的数据,如CSV、Excel、SQL、JSON等。筛选数据可以使用loc和iloc两种方式。
import pandas as pd
# 读取CSV文件
df = pd.read_csv('data.csv')
# 按条件筛选数据
df.loc[df['age'] > 30]
# 使用iloc根据列索引和行索引筛选数据
df.iloc[2:4, 0:2]
3. Matplotlib
Matplotlib是一个Python的2D绘图库。Matplotlib可用于绘制各种静态、动态、交互式和嵌入式图表。
3.1 基本的图表绘制
Matplotlib可以绘制条形图、散点图、折线图、曲线图、饼图等多种图表。
import numpy as np
import matplotlib.pyplot as plt
# 绘制折线图
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
plt.plot(x, y)
plt.show()
# 绘制散点图
x = np.array([1, 2, 3, 4, 5])
y = np.array([5, 7, 3, 8, 4])
plt.scatter(x, y)
plt.show()
3.2 图表定制化
Matplotlib提供了丰富的接口,可以对图表进行各种定制化。例如,可以设置标题、坐标轴标签、网格线、图例等。
import numpy as np
import matplotlib.pyplot as plt
# 绘制折线图
x = np.linspace(0, 2*np.pi)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label='sin')
plt.plot(x, y2, label='cos')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Sine and Cosine Curves')
plt.legend()
plt.grid()
plt.show()
4. Seaborn
Seaborn是一个基于Matplotlib的Python可视化库,提供了一种高度可视化的界面,用于制作统计图表。Seaborn帮助我们探索和理解数据,可用于数据探索、趋势分析、数据清洗等。
4.1 绘制基础图表
Seaborn可以绘制多种基础图表,如条形图、散点图、折线图、核密度估计图等。
import seaborn as sns
import pandas as pd
# 绘制散点图
df = pd.DataFrame({'x': [1, 2, 3, 4, 5], 'y': [5, 7, 3, 8, 4]})
sns.scatterplot(x='x', y='y', data=df)
# 绘制箱线图
tips = sns.load_dataset("tips")
sns.boxplot(x="day", y="total_bill", data=tips)
4.2 绘制高级统计图表
Seaborn还提供了多种高级统计图表,如热力图、聚类图、成对关系图等。
import seaborn as sns
import pandas as pd
# 绘制热力图
df = pd.DataFrame({'x': [1, 1, 2, 2, 3, 3, 4, 4],
'y': [1, 2, 1, 2, 1, 2, 1, 2],
'value': [1, 2, 3, 4, 5, 6, 7, 8]})
df_pivot = df.pivot("y", "x", "value")
sns.heatmap(df_pivot)
# 绘制聚类图
iris = sns.load_dataset("iris")
sns.clustermap(iris.drop("species", axis=1), cmap="mako",
dendrogram_ratio=(.1, .2), cbar_pos=(0, .2, .03, .4))
总的来说,这四个数据分析库都是非常实用的,其提供的各种数据处理、可视化接口非常方便,可以帮助我们更快更准确地对数据进行分析和处理。