Python 是数据分析和科学计算的强大工具,其中 NumPy 和 Pandas 是最受欢迎的两个库。NumPy 提供了高性能的多维数组对象和相关操作,而 Pandas 则提供了强大的数据结构和数据分析工具。本篇博文将详细介绍 NumPy 和 Pandas 的基础知识,并附上一个综合详细的例子。
1. NumPy 基础
NumPy(Numerical Python)是一个用于处理大型多维数组和矩阵的库,此外还提供了许多数学函数来操作这些数组。
安装 NumPy
首先,使用 pip 安装 NumPy:
NumPy 数组
NumPy 的核心是 ndarray 对象,它是一个多维数组。以下是创建 NumPy 数组的几种方式:
 import numpy as np
# 从列表创建数组array1 = np.array([1, 2, 3, 4, 5])
# 创建全零数组array2 = np.zeros((3, 4))
# 创建全一数组array3 = np.ones((2, 3))
# 创建单位矩阵array4 = np.eye(3)
# 创建随机数组array5 = np.random.random((2, 2))
       复制代码
 数组操作
NumPy 提供了丰富的数组操作方法:
 # 数组形状print(array1.shape)
# 数组重塑array6 = array1.reshape((5, 1))
# 数组切片print(array1[1:3])
# 数组广播array7 = np.array([1, 2, 3])array8 = array7 + 1
# 数组运算array9 = np.array([1, 2, 3])array10 = np.array([4, 5, 6])print(array9 + array10)print(array9 * array10)
       复制代码
 数学函数
NumPy 提供了许多数学函数来操作数组:
 # 求和print(np.sum(array9))
# 求均值print(np.mean(array9))
# 求标准差print(np.std(array9))
# 矩阵乘法matrix1 = np.array([[1, 2], [3, 4]])matrix2 = np.array([[5, 6], [7, 8]])print(np.dot(matrix1, matrix2))
       复制代码
 2. Pandas 基础
Pandas 是一个用于数据操作和分析的库,提供了两种主要的数据结构:Series 和 DataFrame。
安装 Pandas
使用 pip 安装 Pandas:
Series
Series 是一种类似于一维数组的对象,具有标签(索引)。
 import pandas as pd
# 从列表创建 Seriesseries1 = pd.Series([1, 2, 3, 4, 5])
# 从字典创建 Seriesseries2 = pd.Series({'a': 1, 'b': 2, 'c': 3})
# Series 操作print(series1[0])print(series2['a'])
       复制代码
 DataFrame
DataFrame 是一种类似于表格的数据结构,包含有序的列,每列可以是不同的类型。
 # 从字典创建 DataFramedata = {'Name': ['Tom', 'Jerry', 'Alice'],        'Age': [20, 21, 19],        'City': ['New York', 'Los Angeles', 'Chicago']}df = pd.DataFrame(data)
# 从 CSV 文件创建 DataFramedf = pd.read_csv('data.csv')
# DataFrame 操作print(df.head())print(df['Name'])print(df.iloc[0])print(df.loc[0, 'Name'])
       复制代码
 数据清洗
Pandas 提供了丰富的数据清洗功能:
 # 处理缺失值df = df.dropna()df = df.fillna(0)
# 数据类型转换df['Age'] = df['Age'].astype(int)
# 重命名列df = df.rename(columns={'Name': 'Full Name'})
       复制代码
 数据分析
Pandas 提供了许多数据分析函数:
 # 描述统计print(df.describe())
# 分组grouped = df.groupby('City')print(grouped.mean())
# 合并df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],                    'B': ['B0', 'B1', 'B2']})df2 = pd.DataFrame({'A': ['A3', 'A4', 'A5'],                    'B': ['B3', 'B4', 'B5']})result = pd.concat([df1, df2])print(result)
       复制代码
 3. 综合示例
以下是一个综合详细的示例,演示了如何使用 NumPy 和 Pandas 进行数据处理和分析。该示例将生成一个包含随机数据的 CSV 文件,然后读取该文件并进行数据分析。
 import numpy as npimport pandas as pd
# 生成随机数据并保存为 CSV 文件np.random.seed(0)data = {    'Name': ['Tom', 'Jerry', 'Alice', 'Bob', 'Charlie'],    'Age': np.random.randint(18, 30, 5),    'Height': np.random.randint(150, 200, 5),    'Weight': np.random.randint(50, 100, 5)}df = pd.DataFrame(data)df.to_csv('random_data.csv', index=False)
# 读取 CSV 文件df = pd.read_csv('random_data.csv')
# 显示前几行数据print("数据前几行:")print(df.head())
# 统计数据print("\n数据统计:")print(df.describe())
# 按年龄分组并计算平均值print("\n按年龄分组并计算平均值:")print(df.groupby('Age').mean())
# 添加一列 BMI(Body Mass Index)df['BMI'] = df['Weight'] / (df['Height'] / 100) ** 2
# 显示计算后的数据print("\n添加 BMI 列后的数据:")print(df)
# 处理缺失值(模拟缺失值处理)df.loc[2, 'Weight'] = np.nandf = df.fillna(df['Weight'].mean())
print("\n处理缺失值后数据:")print(df)
# 保存处理后的数据到新的 CSV 文件df.to_csv('processed_data.csv', index=False)
       复制代码
 运行结果
 数据前几行:      Name  Age  Height  Weight0      Tom   26     189      861    Jerry   22     176      652    Alice   25     158      793      Bob   29     155      984  Charlie   28     151      66
数据统计:             Age      Height      Weightcount   5.000000    5.000000    5.000000mean   26.000000  165.800000   78.800000std     2.915476   16.445498   14.135659min    22.000000  151.000000   65.00000025%    25.000000  155.000000   66.00000050%    26.000000  158.000000   79.00000075%    28.000000  176.000000   86.000000max    29.000000  189.000000   98.000000
按年龄分组并计算平均值:     Height  WeightAge                 22    176.0    65.025    158.0    79.026    189.0    86.028    151.0    66.029    155.0    98.0
添加 BMI 列后的数据:      Name  Age  Height  Weight        BMI0      Tom   26     189    86.0  24.0670761    Jerry   22     176    65.0  20.9919862    Alice   25     158    79.0  31.6398823      Bob   29     155    98.0  40.8585104  Charlie   28     151    66.0  28.918263
处理缺失值后数据:      Name  Age  Height     Weight        BMI0      Tom   26     189  86.000000  24.0670761    Jerry   22     176  65.000000  20.9919862    Alice   25     158  78.800000  31.6398823      Bob   29     155  98.000000  40.8585104  Charlie   28     151  66.000000  28.918263
       复制代码
 4. 总结
本文详细介绍了 Python 中两个重要的数据分析库 NumPy 和 Pandas 的基础知识,并通过一个综合的示例展示了如何使用这些库进行数据处理和分析。希望通过本篇博文,能更好地理解和掌握 NumPy 和 Pandas 的基本用法,为后续的数据分析工作打下坚实的基础。
作者:Rjdeng
链接:https://juejin.cn/post/7399325667256959027
评论