Тьюториалы:
Примеры:
Если нужно что-то более специальное -- смотрите в документации
Рассмотрим сэмпл из данных по авиарейсам в США за январь-апрель 2008 года.
Полный датасет можно найти здесь: http://stat-computing.org/dataexpo/2009/2008.csv.bz2
Описание: http://stat-computing.org/dataexpo/2009/the-data.html
import pandas as pd
data = pd.read_csv('flights.csv')
data.head()
data.columns
data.shape
data['Distance'].head()
data['CancellationCode'].unique()
data[['DepDelay', 'ArrDelay']][:10]
Слайсы по столбцам и строкам:
data.iloc[:10, 1:4]
data.groupby('UniqueCarrier')
data.groupby('Cancelled')['Origin'].describe()
data.groupby('Cancelled')['CancellationCode'].value_counts()
carrier = data[data['CancellationCode'] == 'A']
weather = data[data['CancellationCode'] == 'B']
pd.concat([carrier, weather]).head()
pd.concat([carrier[:3], weather]).head()
data['CarrierDelay'][:10]
data['CarrierDelay'].describe()
data['CarrierDelay'].isnull()[:10]
data[data['CarrierDelay'].isnull()][:10]
Избавляемся от пропусков:
new_data = data.dropna(subset=['CarrierDelay'])
new_data.shape
new_data = data.dropna()
new_data.shape
new_data.to_csv('has_carrier_delay.csv')
Тьюториалы:
Примеры (просто делайте ctrl+f тип нужного графика):
Документация:
Matplotlib + Pandas:
%pylab inline
import matplotlib.pyplot as plt
x = linspace(1, 10, 20)
y = np.log(x)
plot(x, y)
scatter(x, y)
plot(x, y, 'bo-')
data['AirTime'].hist()
data['AirTime'].hist(bins=30)
С группировкой:
cmp_data = pd.concat([data[data['Origin'] == 'ATL'],
data[data['Origin'] == 'ORD']])
cmp_data['AirTime'].hist(by=cmp_data['Origin'], bins=30)
cmp_data['AirTime'].hist(by=cmp_data['Origin'],
bins=30, sharey=True, sharex=True)
Как сделать то же самое в Matplotlib?
bins = 30
fig, axis = plt.subplots(1, 2, sharey=True, sharex=True)
axis[0].hist(cmp_data[cmp_data['Origin'] == 'ATL']['AirTime'].dropna(),
bins=bins)
axis[0].set_xlabel('AirTime')
axis[0].set_ylabel('Scores')
axis[1].hist(cmp_data[cmp_data['Origin'] == 'ORD']['AirTime'].dropna(),
bins=bins)
axis[1].set_xlabel('AirTime')
fig.clf()
bins = 30
index = np.arange(bins)
plt.hist(cmp_data[cmp_data['Origin'] == 'ATL']['AirTime'].dropna(),
bins=bins, alpha=0.6)
plt.hist(cmp_data[cmp_data['Origin'] == 'ORD']['AirTime'].dropna(),
bins=bins, alpha=0.6)
plt.xlabel('AirTime')
plt.ylabel('Scores')
plt.title('Comparison of ATL and ORD airports')
plt.legend(['ATL', 'ORD'])
plt.show()
bins = 30
index = np.arange(bins)
plt.hist(cmp_data[cmp_data['Origin'] == 'ATL']['AirTime'].dropna(),
bins=bins, alpha=0.6, normed=True)
plt.hist(cmp_data[cmp_data['Origin'] == 'ORD']['AirTime'].dropna(),
bins=bins, alpha=0.6, normed=True)
plt.xlabel('AirTime')
plt.ylabel('Scores')
plt.title('Comparison of ATL and ORD airports')
plt.legend(['ATL', 'ORD'])
plt.show()
plt.scatter(data['DepDelay'], data['ArrDelay'])
plt.xlabel('DepDelay')
plt.ylabel('ArrDelay')
from sklearn.decomposition import PCA
pca = PCA(n_components = 2)
data_new = pca.fit_transform(data[['DepDelay', 'ArrDelay']].dropna())
print 'Component 1 explains %.2f of total variance'%pca.explained_variance_ratio_[0]
print 'Component 2 explains %.2f of total variance'%pca.explained_variance_ratio_[1]
plt.scatter(data['DepDelay'], data['ArrDelay'])
tg = pca.components_[0,1]/pca.components_[0,0]
plt.plot([data['DepDelay'].min(), data['DepDelay'].max()],
[data['DepDelay'].min() * tg, data['DepDelay'].max() * tg], color='green')
plt.plot([data['DepDelay'].min(), data['DepDelay'].max()],
[data['ArrDelay'].min(), data['ArrDelay'].max()], color = 'red')
plt.legend(['Regression that accounts variance', 'Obvious regression'], loc=4)
По векторным операциям:
По датасету flights: