花了相当多的时间观察SO上的r和pandas标签,我得到的印象是pandas问题不太可能包含可重现的数据.这是值得的R社会一直要鼓励不错,并感谢像导游这样,新人能得到放在一起,这些例子一些帮助.能够阅读这些指南并返回可重现数据的人通常会更好地获得他们问题的答案.
我们如何为pandas问题创建良好的可重复示例?简单的数据帧可以放在一起,例如:
import pandas as pd
df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice'],
'income': [40000, 50000, 42000]})
Run Code Online (Sandbox Code Playgroud)
但是许多示例数据集需要更复杂的结构,例如:
datetime 指数或数据expand.grid()函数,它会产生某些给定变量的所有可能组合?)对于dput()难以使用几行代码进行模拟的数据集,是否有与R相当的R ,它允许您生成可复制粘贴的代码以重新生成数据结构?
我有一个包含姓名,身高,体重和出生日期等个人数据的数据集.我会建立一个图表,显示特定月份和年份出生的人数.我正在使用python pandas来完成这个,我的策略是尝试按年份和月份进行分组并添加使用计数.但我得到的最接近的是按年或按月计算人数,但不是两者.
df['birthdate'].groupby(df.birthdate.dt.year).agg('count')
Run Code Online (Sandbox Code Playgroud)
stackoverflow中的其他问题指向一个名为TimeGrouper的Grouper,但在pandas文档中搜索没有发现任何问题.任何的想法?
我有一个熊猫数据框,其中的索引是从2007年到2017年的日期。
我想计算每年每个工作日的平均值。我可以按年份分组:
groups = df.groupby(TimeGrouper('A'))
years = DataFrame()
for name, group in groups:
years[name.year] = group.values
Run Code Online (Sandbox Code Playgroud)
这是我创建新数据框(年)的方式,其中在每一列中我获取时间序列的每一年。如果我想查看每年的统计数据(例如,平均值):
print(years.mean())
Run Code Online (Sandbox Code Playgroud)
但是现在我想将每年的每一天都分开,以便获得当时所有时间的每个工作日的平均值。
我唯一知道的是:
year=df[(df.index.year==2007)]
day_week=df[(df.index.weekday==2)]
Run Code Online (Sandbox Code Playgroud)
问题是我必须在一周中的一天更改7次,然后重复11年(我的时间序列从2007年开始到2017年结束),所以我必须做77次!
有没有一种方法可以按年和周日对时间进行分组,以使其更快?
我想做以下事情:
对于看起来像这样的数据框:
df = pd.DataFrame({"ID":["A", "A", "C" ,"B", "B"], "date":["06/24/2014","06/25/2014","06/23/2014","07/02/1999","07/02/1999"], "value": ["3","5","1","7","8"] })
Run Code Online (Sandbox Code Playgroud)
我想按日期分组所有彼此在2天内的观察结果.然后,例如,前3行将被分组,最后两行将被分组.
到目前为止,我曾想过使用类似的东西:
df.groupby(df['date'].map(lambda x: x.month))
Run Code Online (Sandbox Code Playgroud)
这种"模糊组合"的一般方法是什么?
谢谢,
我有一个大熊猫数据框,其中包含列时间戳,名称和值
index timestamp name value
0 1999-12-31 23:59:59.000107 A 16
1 1999-12-31 23:59:59.000385 B 12
2 1999-12-31 23:59:59.000404 C 25
3 1999-12-31 23:59:59.000704 B 15
4 1999-12-31 23:59:59.001281 A 300
5 1999-12-31 23:59:59.002211 C 20
6 1999-12-31 23:59:59.002367 C 3
Run Code Online (Sandbox Code Playgroud)
我想按时间段(例如20ms或20分钟)和名称进行分组,然后计算每组的平均值。
最有效的方法是什么?