1、NumPy 数组与 Pandas DataFrame/Series 转换
NumPy 数组与 Pandas DataFrame/Series 是 Python 中常用的两种数据结构,它们都用于存储和处理数据。NumPy 数组是一种多维数组,它可以存储一维、二维、三维或更高维的数据。NumPy 数组的优点是速度快、效率高,适合用于数值计算。Pandas DataFrame 是一种表格型数据结构,它由行和列组成。Pandas DataFrame 的优点是灵活性强,适合用于各种数据分析任务。
1)NumPy 数组与 Pandas DataFrame转换
可以使用 pd.DataFrame() 函数将 NumPy 数组转换为 Pandas DataFrame。
代码如下,
import numpy as np
import pandas as pd
# 创建一个 NumPy 数组
array = np.array([1, 2, 3, 4])
# 将 NumPy 数组转换为 DataFrame
df = pd.DataFrame(array)
# 查看 DataFrame
print(df)
# 创建一个 NumPy 数组
array = np.array([1, 2, 3, 4])
# 将 NumPy 数组转换为 DataFrame,指定列名为 "a",如果不指定列名,则默认使用数字作为列名
df = pd.DataFrame(array, columns=["a"])
# 查看 DataFrame
print(df)
2)Pandas DataFrame 转换为 NumPy 数组
可以使用 df.to_numpy() 方法将 Pandas DataFrame 转换为 NumPy 数组。
代码如下,
import numpy as np
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({"a": [1, 2, 3, 4], "b": [5, 6, 7, 8]})
# 将 DataFrame 转换为 NumPy 数组
array = df.to_numpy()
# 查看 NumPy 数组
print(array)
# 创建一个 DataFrame,不包含列名
df = pd.DataFrame([1, 2, 3, 4])
# 将 DataFrame 转换为 NumPy 数组
array = df.to_numpy()
# 查看 NumPy 数组
print(array)
3)NumPy 数组转换为 Pandas Series
可以使用 pd.Series() 函数将 NumPy 数组转换为 Pandas Series。
代码如下,
import numpy as np
import pandas as pd
# 创建一个 NumPy 数组
array = np.array([1, 2, 3, 4])
# 将 NumPy 数组转换为 Series
series = pd.Series(array)
# 查看 Series
print(series)
2、Pandas 中使用 NumPy 函数
NumPy 函数可以直接应用于 Pandas 数据结构。
1)使用 NumPy 函数处理 Pandas DataFrame
import numpy as np
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({"a": [1, 2, 3, 4], "b": [5, 6, 7, 8]})
# 使用 NumPy 函数处理 DataFrame
df["a"] = np.sin(df["a"])
# 查看 DataFrame
print(df)
# 创建一个 DataFrame
df = pd.DataFrame({"a": [1, 2, 3, 4], "b": [5, 6, 7, 8]})
# 计算 DataFrame 的平均值
mean = np.mean(df["a"])
# 查看平均值
print(mean)
2)使用 NumPy 函数处理 Pandas Series
import numpy as np
import pandas as pd
# 创建一个 Series
series = pd.Series([1, 2, 3, 4])
# 使用 NumPy 函数处理 Series
series = np.sin(series)
# 查看 Series
print(series)
# 创建一个 Series
series = pd.Series([1, 2, 3, 4])
# 计算 Series 的平均值
mean = np.mean(series)
# 查看平均值
print(mean)
3)计算时间序列数据的差分
import numpy as np
import pandas as pd
# 创建时间序列数据
dates = pd.date_range('20210101', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
# 查看时间序列数据
print(df)