写点什么

Python 数据分析:Numpy、Pandas 基础

  • 2024-08-13
    湖南
  • 本文字数:2741 字

    阅读完需:约 9 分钟

Python 是数据分析和科学计算的强大工具,其中 NumPy 和 Pandas 是最受欢迎的两个库。NumPy 提供了高性能的多维数组对象和相关操作,而 Pandas 则提供了强大的数据结构和数据分析工具。本篇博文将详细介绍 NumPy 和 Pandas 的基础知识,并附上一个综合详细的例子。

1. NumPy 基础

NumPy(Numerical Python)是一个用于处理大型多维数组和矩阵的库,此外还提供了许多数学函数来操作这些数组。

安装 NumPy

首先,使用 pip 安装 NumPy:

pip install 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:

pip install 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

用户头像

欢迎关注,一起学习,一起交流,一起进步 2020-06-14 加入

公众号:做梦都在改BUG

评论

发布
暂无评论
Python数据分析:Numpy、Pandas基础_Python_我再BUG界嘎嘎乱杀_InfoQ写作社区