Загрузка данных


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()