#python #pandas #csv #group-by #datasource
#python #pandas #csv #группировка по #источник данных
Вопрос:
У меня есть файл .csv с именем Data.csv. Мне нужно найти среднее количество снега в месяц в каждом местоположении или «ИМЕНИ». Затем мне нужно сохранять итоговые данные за каждый год, 2016 и 2017, в отдельные файлы .csv. Я использую pandas. Не уверен, с чего начать.
Это то, что у меня есть прямо сейчас из того, что я собрал в ходе исследования.
import pandas as pd
df2 = pd.read_csv("Data.csv")
gname = df2.groupby('NAME')
for NAME, Name_df2 in data:
df2['DATE'] = pd.to_datetime(df2['DATE'])
df2.groupby([df.DATE.dt.month,'NAME','SNOW']).mean().sort_values()
Комментарии:
1. В чем ваш вопрос? Есть ли сообщение об ошибке? Как насчет того, чтобы предоставить нам несколько примеров данных?
2. для начала с этим немного не так. Я бы привел нам пример фрейма данных для работы, поскольку мы не можем получить доступ к Data.csv, поэтому создайте
pd.DataFrame({'NAME':['Boston','Boston','New York', 'New York'], 'year':[2016, 2017, 2017, 2016], 'totals':[5.6, 66, 87, 55]})
что-то вроде или что-то в этом роде. Другое дело, что я не вижу, где вы где-либо определяете данные?
Ответ №1:
Сначала вам нужно предоставить нам примерные данные. но это где-то направлено:
import pandas as pd
df = pd.read_csv('data.csv')
df['DATE'] = pd.to_datetime(df['DATE'])
g = df.groupby([df.DATE.dt.year, df.DATE.dt.month, 'NAME'])['SNOW'].mean().reset_index().sort_values()
df_2016 = df.loc[df.DATE.dt.year == 2016]
df_2016.to_csv('2016 snow totals.csv', index=False)
df_2017 = df.loc[df.DATE.dt.year == 2017]
df_2017.to_csv('2017 snow totals.csv', index=False)
если у вас есть более 2 лет, вы должны разделить сгруппированный фрейм данных на список и выполнить итерацию по нему, как..
for year in range(df.DATE.dt.year.min(), df.DATE.dt.year.max()):
df.loc[df.DATE.dt.year == year].to_csv(year '_snowfall.csv', index=False)
Комментарии:
1. С помощью python мы можем даже сжать этот 7-строчный код до 2 строк.. (насколько я могу идти ..)