了解函数中的“ return data_mine ['one'] = 1”

时间:2019-05-09 15:43:33

标签: python pandas machine-learning

我在当前阅读的书中发现了以下功能。我理解函数,但不理解为什么我们做data_mine['one'] = 1以及为什么我们返回data_resampled.one。您能向我解释作者这样做的原因吗?在这里您可以找到citibike.csv

def load_citibike():
    data_mine = pd.read_csv('citibike.csv')
    data_mine['one'] = 1
    data_mine['starttime'] = pd.to_datetime(data_mine.starttime)
    data_starttime = data_mine.set_index("starttime")
    data_resampled = data_starttime.resample("3h").sum().fillna(0)
    return data_resampled.one

citibike = load_citibike()
citibike.head()

plt.figure(figsize=(10, 3))
xticks = pd.date_range(start=citibike.index.min(), end=citibike.index.max(),
                       freq='D')
plt.xticks(xticks, xticks.strftime("%a %m-%d"), rotation=90, ha="left")
plt.plot(citibike, linewidth=1)
plt.xlabel("Date")
plt.ylabel("Rentals")

3 个答案:

答案 0 :(得分:0)

data_mine['one'] = 1将列的所有值-“一个”(如果已经存在)设为1。如果尚不存在,则只需在新列['one']上附加所有值为1的列data_mine

希望这会使您更好地理解该功能。

答案 1 :(得分:0)

getContentLength()data_resampled都是大熊猫的data_mine

如您所见here,您只能通过设置DataFrame(或使用其他初始化方法)来创建新属性,但是一旦执行{{1} }。

答案 2 :(得分:0)

作者正在利用这样一个事实,当您groupby.func()时,列名保持不变,尽管值会更改。

因此,在这种情况下,尽管列'one'最初是全1的列,但返回的结果列是该3小时时段内的观测值总数。 (IMO,应更改名称以反映该列的真实含义。)


这是插图:

import pandas as pd
df = pd.DataFrame({'starttime': pd.date_range('2018-01-01', freq='15min', periods=20)})

df['one'] = 1
print(df.head())
#            starttime  one
#0 2018-01-01 00:00:00    1
#1 2018-01-01 00:15:00    1
#2 2018-01-01 00:30:00    1
#3 2018-01-01 00:45:00    1
#4 2018-01-01 01:00:00    1

df['starttime'] = pd.to_datetime(df.starttime)
df_starttime = df.set_index("starttime")
df_resampled = df_starttime.resample("3h").sum().fillna(0)

print(df_resampled)
#                     one
#starttime               
#2018-01-01 00:00:00   12
#2018-01-01 03:00:00    8

顺便说一句,如果等效地写为

,该函数将更加清晰。
def load_citibike():
    df = pd.read_csv('citibike.csv')
    df['starttime'] = pd.to_datetime(df.starttime)
    return df.set_index('starttime').resample('3H').size().fillna(0)