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)