📜  numpy 和 pandas 指南 - Python (1)

📅  最后修改于: 2023-12-03 15:03:18.878000             🧑  作者: Mango

Numpy 和 Pandas 指南 - Python

简介

Numpy 和 Pandas 是 Python 中重要的数据处理和分析库。Numpy 提供了用于在 Python 中进行科学计算的基础构建模块,而 Pandas 构建于 Numpy 的基础之上,提供了更多高级的数据分析功能。

在本指南中,我们将介绍 Numpy 和 Pandas 的一些常用功能和技巧,包括:

  • Numpy 中的数组创建和操作方法
  • Pandas 中的数据读取和处理方法
  • 如何在 Pandas 中进行数据合并和数据透视
  • Pandas 中常用的数据可视化方法
Numpy
数组创建和操作

Numpy 的核心是多维数组数组对象 ndarray,我们可以使用 numpy.array() 方法创建一个数组:

import numpy as np

# 创建一个数组
arr = np.array([1, 2, 3, 4, 5])
print(arr)

输出:

[1 2 3 4 5]

Numpy 数组支持与标量、列表、数组的数学运算:

# 与标量运算
arr = np.array([1, 2, 3, 4, 5])
print(arr + 1)

# 与列表运算
print(arr + [1, 1, 1, 1, 1])

# 与数组运算
arr2 = np.array([1, 1, 1, 1, 1])
print(arr + arr2)

输出:

[2 3 4 5 6]
[2 3 4 5 6]
[2 3 4 5 6]

数组元素的访问方式与列表相似,可以使用下标,也可以使用切片:

# 访问单个元素
arr = np.array([1, 2, 3, 4, 5])
print(arr[0])

# 切片
print(arr[1:3])

输出:

1
[2 3]
数组操作和计算

Numpy 提供了一些数组操作方法:

# 生成一个矩阵
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2d)

# 转置
print(arr2d.T)

# 矩阵乘法
print(np.dot(arr2d, arr2d.T))

# 平均值
print(np.mean(arr2d))

# 标准差
print(np.std(arr2d))

输出:

[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[1 4 7]
 [2 5 8]
 [3 6 9]]
[[ 14  32  50]
 [ 32  77 122]
 [ 50 122 194]]
5.0
2.581988897471611
Pandas
数据读取和处理

Pandas 中内置了多种数据读取格式,可以轻松地读取不同的文件格式,如 csv 格式、Excel 格式、SQL 数据库等。通过 pandas.read_csv() 方法读取 csv 文件:

import pandas as pd

# 读取 csv 文件
df = pd.read_csv('data.csv')

# 打印前 5 行数据
print(df.head())

输出:

   id  name  age  height
0   1   Bob   25     175
1   2  Mike   28     180
2   3   Tom   30     185
3   4  Jack   22     170
4   5  Alex   26     172

我们可以使用 Pandas 提供的数据筛选方法,对数据进行处理:

# 筛选满足条件的数据
df_filtered = df[df['age'] > 25]

# 按照年龄排序
df_sorted = df.sort_values(by='age', ascending=False)
数据聚合和透视

用 Pandas 可以很方便地对数据进行聚合和透视操作。

# 按照年龄分组求平均值
df_grouped = df.groupby('age').mean()

# 数据透视
df_pivot = pd.pivot_table(df, index=['age'], values=['height'])
数据可视化

Pandas 中自带 Matplotlib 库,可以方便地对数据进行可视化:

# 导入绘图库
import matplotlib.pyplot as plt

# 绘制柱状图
df.plot(kind='bar', x='name', y='age')

# 展示图像
plt.show()

输出:

image