Загрузка данных
s1 = pd.Series([10, 20, 30, 40, 50])
print("Series из списка:")
print(s1)
# 2. Из словаря
s2 = pd.Series({'a': 1, 'b': 2, 'c': 3, 'd': 4})
print("\nSeries из словаря:")
print(s2)
# 3. np.arange()
s3 = pd.Series(np.arange(5, 10), index=['v', 'w', 'x', 'y', 'z'])
print("\nSeries из np.arange:")
print(s3)
# 4. Из скалярного значения
s4 = pd.Series(5, index=['a', 'b', 'c', 'd'])
print("\nSeries из скаляра:")
print(s4)
# =====================================
# Задание 3. Свойства .index и .values
# =====================================
print("\nИндекс:")
print(s2.index)
print("\nЗначения:")
print(s2.values)
print("\nТип индекса:")
print(type(s2.index))
print("\nТип значений:")
print(type(s2.values))
# =====================================
# Задание 4. Размер и форма объекта Series
# =====================================
print("\nКоличество элементов:")
print(s1.size)
print("\nКоличество элементов через len:")
print(len(s1))
print("\nФорма:")
print(s1.shape)
# Объяснение:
# Series одномерный объект, поэтому форма записывается как (5,)
# =====================================
# Задание 5. Методы .head(), .tail(), .take()
# =====================================
rand_s = pd.Series(np.random.randint(0, 100, 20))
print("\nПервые 5:")
print(rand_s.head())
print("\nПервые 7:")
print(rand_s.head(7))
print("\nПоследние 4:")
print(rand_s.tail(4))
print("\nЭлементы 0,5,10,15:")
print(rand_s.take([0, 5, 10, 15]))
# =====================================
# Задание 6. Доступ по метке и позиции
# =====================================
s = pd.Series([10, 20, 30, 40, 50], index=['a', 'b', 'c', 'd', 'e'])
print("\nЭлемент с меткой c:")
print(s['c'])
print("\nЭлемент с меткой c через loc:")
print(s.loc['c'])
print("\nЭлемент с позицией 2:")
print(s.iloc[2])
print("\nСрез от b до d:")
print(s.loc['b':'d'])
print("\nСрез позиций 1:3")
print(s.iloc[1:3])
# =====================================
# Задание 7. Арифметические операции
# =====================================
s1 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
s2 = pd.Series([10, 20, 30, 40], index=['b', 'c', 'd', 'e'])
print("\nСумма:")
print(s1 + s2)
print("\nПроизведение:")
print(s1 * s2)
print("\nСумма с fill_value=0:")
print(s1.add(s2, fill_value=0))
# =====================================
# Задание 8. Логический отбор
# =====================================
mask = s > 30
print("\nМаска:")
print(mask)
print("\nЭлементы > 30:")
print(s[mask])
print("\nКоличество элементов > 30:")
print(mask.sum())
# =====================================
# Задание 9. Переиндексация
# =====================================
s = pd.Series([1, 2, 3], index=['x', 'y', 'z'])
print("\nНовый индекс:")
print(s.reindex(['x', 'y', 'z', 'w']))
print("\nС заполнением 0:")
print(s.reindex(['x', 'y', 'z', 'w'], fill_value=0))
print("\nПовторяющийся индекс:")
print(s.reindex(['x', 'y', 'z', 'z']))
# =====================================
# Задание 10. Загрузка CSV и DataFrame
# =====================================
url = 'https://raw.githubusercontent.com/Gewissta/Learning_pandas_russian_translation/master/data/google_stock_price.csv'
df = pd.read_csv(url)
print("\nПервые 5 строк:")
print(df.head())
print("\nИнформация:")
print(df.info())
df['Date'] = pd.to_datetime(df['Date'])
df.set_index('Date', inplace=True)
print("\nДанные за 2016-12-20:")
print(df.loc['2016-12-20'])
print("\nГрафик Close:")
df['Close'].plot(figsize=(12,5), title='Цена закрытия Google')
plt.show()
# =====================================
# Задание 11. Дополнительное
# =====================================
print("\nСредняя цена открытия:")
print(df['Open'].mean())
print("\nМаксимальная цена закрытия:")
print(df['Close'].max())
print("\nМинимальный объём:")
print(df['Volume'].min())
df['Change'] = df['Close'] - df['Open']
print("\nГистограмма изменений цены:")
df['Change'].hist(figsize=(8,5))
plt.title("Изменение цены")
plt.show()