Python 数据分析核心库大全!

Python 是数据分析领域最常用的编程语言之一,凭借其强大的库支持和简洁易懂的语法,广泛应用于数据处理、统计分析、机器学习等领域。本篇文章将介绍 Python 数据分析中常用的核心库,并通过具体的案例和场景展示它们的使用方法和应用场景。

目录

  1. NumPy - 数值计算的基础库
  2. Pandas - 高效的数据处理库
  3. Matplotlib - 数据可视化库
  4. Seaborn - 统计数据可视化库
  5. SciPy - 科学计算与优化库
  6. Scikit-learn - 机器学习库
  7. Statsmodels - 统计建模库
  8. SQLAlchemy - 数据库操作库
  9. OpenCV - 图像处理与计算机视觉库
  10. TensorFlow 和 PyTorch - 深度学习框架

1. NumPy - 数值计算的基础库

NumPy 是 Python 中用于进行数值计算的基础库,它提供了高效的数组操作和各种数值计算功能。NumPy 作为许多其他数据分析和机器学习库的底层依赖,具有强大的矩阵运算能力,能够对大型数据集进行快速处理。

1.1 NumPy 基本用法

首先,来看一下 NumPy 数组(ndarray)的创建和操作:

pythonCopy Code
import numpy as np # 创建一个一维数组 arr = np.array([1, 2, 3, 4, 5]) print(arr) # 创建一个二维数组 arr2d = np.array([[1, 2, 3], [4, 5, 6]]) print(arr2d) # 数组的基本运算 arr + 2 # 每个元素加2 arr * 3 # 每个元素乘3 arr2d.T # 转置二维数组

1.2 案例:处理股票价格数据

假设我们有一组股票价格数据,利用 NumPy 计算其日收益率和波动率:

pythonCopy Code
# 假设这是某股票的收盘价 prices = np.array([100, 102, 101, 105, 107]) # 计算每日收益率 daily_returns = (prices[1:] - prices[:-1]) / prices[:-1] print("日收益率:", daily_returns) # 计算收益率的标准差(波动率) volatility = np.std(daily_returns) print("股票波动率:", volatility)

2. Pandas - 高效的数据处理库

Pandas 是一个开源的 Python 库,提供高效的数据操作和分析功能,特别适用于表格数据(如 Excel、CSV 文件)。Pandas 中最重要的两种数据结构是 SeriesDataFrame,它们分别用于处理一维和二维数据。

2.1 DataFrame 的创建与操作

pythonCopy Code
import pandas as pd # 创建 DataFrame data = { 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago'] } df = pd.DataFrame(data) print(df) # 选择特定列 print(df['Name']) # 选择特定行 print(df.loc[0]) # 计算某一列的平均值 print(df['Age'].mean())

2.2 案例:数据清洗与分析

假设我们有一个包含学生成绩的数据集,数据需要清洗和分析:

pythonCopy Code
# 模拟一些学生成绩数据 data = { 'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'], 'Math': [95, 78, np.nan, 85, 92], 'English': [88, np.nan, 92, 76, 85], 'Science': [92, 84, 88, np.nan, 90] } df = pd.DataFrame(data) # 填充缺失值 df_filled = df.fillna(df.mean()) print(df_filled) # 计算每个学生的总分 df_filled['Total'] = df_filled[['Math', 'English', 'Science']].sum(axis=1) print(df_filled)

3. Matplotlib - 数据可视化库

Matplotlib 是 Python 中最常用的绘图库,它可以生成各种类型的图表,如线性图、散点图、柱状图等。Matplotlib 的灵活性非常高,用户可以自定义图表的各个元素,创建出专业的可视化效果。

3.1 基本的图表绘制

pythonCopy Code
import matplotlib.pyplot as plt # 绘制一个简单的折线图 x = np.linspace(0, 10, 100) y = np.sin(x) plt.plot(x, y) plt.title('Sin Wave') plt.xlabel('x') plt.ylabel('sin(x)') plt.grid(True) plt.show()

3.2 案例:股票价格趋势可视化

假设我们有一组股票的收盘价数据,使用 Matplotlib 绘制其趋势图:

pythonCopy Code
import pandas as pd import matplotlib.pyplot as plt # 模拟股票收盘价数据 dates = pd.date_range('2024-01-01', periods=10, freq='D') prices = [100, 102, 101, 105, 107, 110, 108, 106, 104, 103] df = pd.DataFrame({'Date': dates, 'Price': prices}) # 绘制股票价格趋势 plt.plot(df['Date'], df['Price'], marker='o', color='b', label='Closing Price') plt.title('Stock Price Trend') plt.xlabel('Date') plt.ylabel('Price') plt.legend() plt.xticks(rotation=45) plt.grid(True) plt.show()

4. Seaborn - 统计数据可视化库

Seaborn 是基于 Matplotlib 的高级可视化库,专注于统计图表,提供了更为简洁和美观的接口。它特别适合用于探索性数据分析(EDA),可以自动化处理许多细节。

4.1 基本图表绘制

pythonCopy Code
import seaborn as sns import matplotlib.pyplot as plt # 加载示例数据集 tips = sns.load_dataset('tips') # 绘制箱线图 sns.boxplot(x='day', y='total_bill', data=tips) plt.title('Boxplot of Total Bill by Day') plt.show() # 绘制散点图 sns.scatterplot(x='total_bill', y='tip', data=tips) plt.title('Scatterplot of Total Bill vs Tip') plt.show()

4.2 案例:探索性数据分析

假设我们有一份关于顾客消费的记录数据,使用 Seaborn 进行数据可视化,分析顾客的消费模式。

pythonCopy Code
# 加载顾客消费数据 tips = sns.load_dataset('tips') # 绘制热力图 corr = tips.corr() sns.heatmap(corr, annot=True, cmap='coolwarm') plt.title('Correlation Heatmap') plt.show() # 绘制分面网格 sns.pairplot(tips, hue='sex') plt.show()

5. SciPy - 科学计算与优化库

SciPy 是建立在 NumPy 基础上的一个用于科学计算的库,它提供了许多用于数学、科学和工程问题的函数,涵盖了线性代数、优化、积分、插值、信号处理等领域。

5.1 基本优化

pythonCopy Code
from scipy.optimize import minimize # 定义目标函数 def objective(x): return x**2 + 5*x + 6 # 最小化目标函数 result = minimize(objective, 0) print(result)

5.2 案例:最小二乘法拟合

假设我们有一组数据点,使用 SciPy 的最小二乘法进行拟合。

pythonCopy Code
import numpy as np import matplotlib.pyplot as plt from scipy.optimize import curve_fit # 模拟数据 x_data = np.linspace(0, 4, 50) y_data = 2.5 * np.sin(x_data) + np.random.normal(size=50) # 定义拟合模型 def model(x, a, b): return a * np.sin(b * x) # 使用最小二乘法拟合 params, covariance = curve_fit(model, x_data, y_data, p0=[2, 2]) a, b = params # 绘制拟合结果 plt.scatter(x_data, y_data, label='Data') plt.plot(x_data, model(x_data, a, b), label='Fit', color='red') plt.legend() plt.show()

6. Scikit-le