pandas - andyceo/documentation GitHub Wiki
Pandas - наиболее распространённая библиотека для обработки и очистки данных.
Официальная документация Pandas
Pandas предоставляет два объекта: Series
и Dataframe
.
Series
- больше всего похож на обычный словарь в Python.
labels = ["label 1", "label 2", "label 3"]
list_values = [1,2,3]
arr_values = np.array(list_values)
pd.Series(list_values, index=labels)
Dataframe
- это двумерный Series
с поименованными строками и колонками
list_columns = ["col_1", "col_2", "col_3"]
list_index = ["row_1", "row_2", "row_3"]
arr_bis = np.array([[1,2,3], [7,1,6], [9,6,9]])
df = pd.DataFrame(arr_bis, index=list_index, columns=list_columns)
df.values # return Numpy matrix (2D-array)
import pandas as pd
assets = pd.read_csv("/tmp/assets.csv") # simple create DataFrame from csv file
assets = pd.read_csv("/tmp/assets.csv", parse_dates=True, index_col="time")
# parse_dates - парсит строки дат в datetime
# index_col - строит индекс (какую колонку использовать для задания меток строкам)
# сортировка по индексу
assets = assets.sort_index(ascending=True)
# выбор только некоторых колонок
assets = assets[["Close DJI30", "Close CAC40", "Close SP500"]]
# удаляем все строки, содержащие хотя бы одно пустое значение
assets = assets.dropna()
# перестраиваем индекс
assets = assets.reset_index()
# rolling: создаем новую колонку со скользящей средней
assets["SMA 15"] = assets[["Close SP500"]].rolling(15).mean()
# shift: возвращает колонку со взятым из прошлого значением
assets["Close SP500"].shift(1)
# группировка
arr = [[1,11], [1,10], [3, 15], [3, 15], [3, 15]]
df = pd.DataFrame(arr, columns=["num", "value"])
df.groupby(by="num").mean()
df.groupby(by="num").sum()
df.groupby(by="num").std()
Функции DataFrame.iloc
и DataFrame.loc
.
assets.iloc[0:1500, 0:10]
assets.loc["2014":"2015"]
assets.loc[assets["Close DJI30"] > 15000]
df1 = assets.iloc[:, :3]
df2 = assets.iloc[:, 3:]
pd.concat((df1, df2), axis=1)
df1 = assets.iloc[1500:, :]
df2 = assets.iloc[:1500, :]
pd.concat((df1, df2), axis=0)
Метода append
у Dataframe нет! Его убрали, т.к. сложность метода растет квадратично от кол-ва строк, и его часто использовали в циклах. См. DataFrame object has no attribute append
Создание датафрейма из csv-файла и его очистка:
assets = pd.read_csv("/tmp/assets.csv", parse_dates=True, index_col="time")
assets = assets.dropna()
assets = assets.sort_index(ascending=True)
Импортируем биржевые данные из файла ../data/facebook.csv
, и указываем номер колонки, по которой будет строиться индекс (по умолчанию он будет строиться на колонках 0,1,2,3..):
import pandas as pd
fb = pd.read_csv('../data/facebook.csv', index_col=0)
Убедимся, что данные загружены, показав нулевой столбец нулевой строки:
print(fb.iloc[0, 0])
Начертим график цены закрытия:
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 8))
fb['Close'].loc['2015-01-01':'2015-12-31'].plot(label='Close')
plt.legend()
plt.show()
- взять последнее значение колонки:
last_value = df['City'].iat[-1]