Совмещение Pandas с NumPy
Pandas построен на NumPy, и они тесно интегрированы. Понимание их взаимодействия может сделать обработку данных и научные вычисления более эффективными.
Взаимное преобразование
Преобразование между DataFrame/Series и NumPy
Пример
import pandas as pd
import numpy as np
# Преобразовать DataFrame в массив NumPy
df = pd.DataFrame({
"A": [1, 2, 3],
"B": [4, 5, 6]
})
arr = df.to_numpy()
print("DataFrame в массив:")
print(arr)
print(f"Тип: {type(arr)}")
print()
# Преобразовать Series в массив
s = pd.Series([1, 2, 3])
arr = s.values # Или s.to_numpy()
print("Series в массив:")
print(arr)
print()
# Преобразовать NumPy в DataFrame
arr = np.array([[1, 2], [3, 4], [5, 6]])
df = pd.DataFrame(arr, columns=["A", "B"])
print("Массив в DataFrame:")
print(df)
import numpy as np
# Преобразовать DataFrame в массив NumPy
df = pd.DataFrame({
"A": [1, 2, 3],
"B": [4, 5, 6]
})
arr = df.to_numpy()
print("DataFrame в массив:")
print(arr)
print(f"Тип: {type(arr)}")
print()
# Преобразовать Series в массив
s = pd.Series([1, 2, 3])
arr = s.values # Или s.to_numpy()
print("Series в массив:")
print(arr)
print()
# Преобразовать NumPy в DataFrame
arr = np.array([[1, 2], [3, 4], [5, 6]])
df = pd.DataFrame(arr, columns=["A", "B"])
print("Массив в DataFrame:")
print(df)
Использование функций NumPy в Pandas
Пример
import pandas as pd
import numpy as np
s = pd.Series([1, 2, 3, 4, 5])
# Использовать функции NumPy
print("Абсолютное значение:", np.abs(s))
print("Квадратный корень:", np.sqrt(s))
print("Экспонента:", np.exp(s))
print("Логарифм:", np.log(s))
print()
# Условная фильтрация
print("Значения больше 3:")
print(s[s > 3])
import numpy as np
s = pd.Series([1, 2, 3, 4, 5])
# Использовать функции NumPy
print("Абсолютное значение:", np.abs(s))
print("Квадратный корень:", np.sqrt(s))
print("Экспонента:", np.exp(s))
print("Логарифм:", np.log(s))
print()
# Условная фильтрация
print("Значения больше 3:")
print(s[s > 3])
Векторные операции
Пример
import pandas as pd
import numpy as np
df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
# Векторные операции
print("A + B:", (df["A"] + df["B"]).tolist())
print("A * B:", (df["A"] * df["B"]).tolist())
print("A > B:", (df["A"] > df["B"]).tolist())
print()
# Использование apply для поэлементных вычислений
result = df.apply(lambda x: np.multiply(x, 2))
print("Каждый элемент * 2:")
print(result)
import numpy as np
df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
# Векторные операции
print("A + B:", (df["A"] + df["B"]).tolist())
print("A * B:", (df["A"] * df["B"]).tolist())
print("A > B:", (df["A"] > df["B"]).tolist())
print()
# Использование apply для поэлементных вычислений
result = df.apply(lambda x: np.multiply(x, 2))
print("Каждый элемент * 2:")
print(result)
Методы численных вычислений
Пример
import pandas as pd
import numpy as np
df = pd.DataFrame({
"A": [1, 2, 3, 4, 5],
"B": [10, 20, 30, 40, 50]
})
# Вычислить процентное изменение A относительно B
df["Скорость изменения"] = np.divide(df["A"], df["B"], where=df["B"] != 0) * 100
print("Процентное изменение:")
print(df)
print()
# Используйте np.where для условного присваивания
df["Label"] = np.where(df["A"] > 3, "Большой", "Малый")
print("Условная метка:")
print(df)
import numpy as np
df = pd.DataFrame({
"A": [1, 2, 3, 4, 5],
"B": [10, 20, 30, 40, 50]
})
# Вычислить процентное изменение A относительно B
df["Скорость изменения"] = np.divide(df["A"], df["B"], where=df["B"] != 0) * 100
print("Процентное изменение:")
print(df)
print()
# Используйте np.where для условного присваивания
df["Label"] = np.where(df["A"] > 3, "Большой", "Малый")
print("Условная метка:")
print(df)
Статистические вычисления
Пример
import pandas as pd
import numpy as np
s = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# Статистические функции NumPy
print(f"Среднее: {np.mean(s):.2f}")
print(f"Стандартное отклонение: {np.std(s):.2f}")
print(f"Максимум: {np.max(s)}")
print(f"Минимум: {np.min(s)}")
print()
# Медиана
print(f"Median: {np.median(s)}")
import numpy as np
s = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# Статистические функции NumPy
print(f"Среднее: {np.mean(s):.2f}")
print(f"Стандартное отклонение: {np.std(s):.2f}")
print(f"Максимум: {np.max(s)}")
print(f"Минимум: {np.min(s)}")
print()
# Медиана
print(f"Median: {np.median(s)}")
Другие расширенияГлубокая интеграция Pandas и NumPy делает сложную обработку данных простой и эффективной.