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
# 从列表创建 Series
series1 = pd.Series([1, 2, 3, 4, 5])
# 从字典创建 Series
series2 = pd.Series({'a': 1, 'b': 2, 'c': 3})
# Series 操作
print(series1[0])
print(series2['a'])
复制代码
DataFrame
DataFrame 是一种类似于表格的数据结构,包含有序的列,每列可以是不同的类型。
# 从字典创建 DataFrame
data = {'Name': ['Tom', 'Jerry', 'Alice'],
'Age': [20, 21, 19],
'City': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)
# 从 CSV 文件创建 DataFrame
df = 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 np
import 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.nan
df = df.fillna(df['Weight'].mean())
print("\n处理缺失值后数据:")
print(df)
# 保存处理后的数据到新的 CSV 文件
df.to_csv('processed_data.csv', index=False)
复制代码
运行结果
数据前几行:
Name Age Height Weight
0 Tom 26 189 86
1 Jerry 22 176 65
2 Alice 25 158 79
3 Bob 29 155 98
4 Charlie 28 151 66
数据统计:
Age Height Weight
count 5.000000 5.000000 5.000000
mean 26.000000 165.800000 78.800000
std 2.915476 16.445498 14.135659
min 22.000000 151.000000 65.000000
25% 25.000000 155.000000 66.000000
50% 26.000000 158.000000 79.000000
75% 28.000000 176.000000 86.000000
max 29.000000 189.000000 98.000000
按年龄分组并计算平均值:
Height Weight
Age
22 176.0 65.0
25 158.0 79.0
26 189.0 86.0
28 151.0 66.0
29 155.0 98.0
添加 BMI 列后的数据:
Name Age Height Weight BMI
0 Tom 26 189 86.0 24.067076
1 Jerry 22 176 65.0 20.991986
2 Alice 25 158 79.0 31.639882
3 Bob 29 155 98.0 40.858510
4 Charlie 28 151 66.0 28.918263
处理缺失值后数据:
Name Age Height Weight BMI
0 Tom 26 189 86.000000 24.067076
1 Jerry 22 176 65.000000 20.991986
2 Alice 25 158 78.800000 31.639882
3 Bob 29 155 98.000000 40.858510
4 Charlie 28 151 66.000000 28.918263
复制代码
4. 总结
本文详细介绍了 Python 中两个重要的数据分析库 NumPy 和 Pandas 的基础知识,并通过一个综合的示例展示了如何使用这些库进行数据处理和分析。希望通过本篇博文,能更好地理解和掌握 NumPy 和 Pandas 的基本用法,为后续的数据分析工作打下坚实的基础。
作者:Rjdeng
链接:https://juejin.cn/post/7399325667256959027
评论