- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有这样的数据,
[
{
"arrivalDate": 1493611200000,
"price": 4588
},
{
"arrivalDate": 1493352000000,
"price": 4630
},
{
"arrivalDate": 1493179200000,
"price": 4553
},
{
"arrivalDate": 1493092800000,
"price": 4530
},
{
"arrivalDate": 1493006400000,
"price": 4578
},
{
"arrivalDate": 1490572800000,
"price": 4457
}
]
我想汇总并显示每日价格和每周平均价格的图表。
每日统计数据很简单,但我无法算出每周平均值。请注意,我的纪元以毫秒为单位。
我试过了,
def get_daily_weekly_and_monthly_aggregates(datewise_prices):
p_dataframe = pandas.DataFrame.from_records(datewise_prices)
daily = p_dataframe.sort_values(by=['arrivalDate'], ascending=[False])[:6] # for 7 days
# TODO - This should be configurable. Not hardcoded.
daily['label'] = daily['arrivalDate'].map(lambda x: pytz.timezone('Asia/Kolkata').localize(datetime.fromtimestamp(x/1000)).strftime("%d %b"))
daily_list = daily.to_dict('records')
pandas.to_datetime(p_dataframe['arrivalDate'], unit='ms')
p_dataframe.set_index(pandas.DatetimeIndex(p_dataframe["arrivalDate"]), inplace=True)
weekly = p_dataframe.groupby(pandas.TimeGrouper("W")).agg(lambda grp: list(grp))
weekly.mean()
weekly_list = weekly.to_dict('records')
return daily_list, weekly_list
我得到 weekly_list 作为,
[
{
"arrivalDate": [
1490054400000,
1490572800000,
1493006400000,
1493092800000,
1493179200000,
1493352000000,
1493611200000
],
"modalPrice": [
4357,
4457,
4578,
4530,
4553,
4630,
4588
]
}
]
这是不希望的。
我真正需要的是,
[
{
"week": "1 May to 7 May",
"avg": 4588
},
{
"week": "24 Apr to 30 Apr",
"avg": 4572
},
{
"week": "27 Mar to 02 Apr",
"avg": 4457
}
]
我该怎么做?
最佳答案
您可以使用 to_datetime
先然后resample
聚合 sum
,最后如果需要删除 NaN
添加 dropna
:
#with borrowing data from piRSquared answer
df['arrivalDate'] = pd.to_datetime(df.arrivalDate, unit='ms')
df1 = df.resample('W', on='arrivalDate')['price'].sum().dropna().reset_index()
print (df1)
arrivalDate price
0 2017-04-02 4457.0
1 2017-04-30 18291.0
2 2017-05-07 4588.0
在 resample
中没有参数 on
的类似解决方案,而是使用 set_index
对于 DatetimeIndex
:
df['arrivalDate'] = pd.to_datetime(df.arrivalDate, unit='ms')
df1 = df.set_index('arrivalDate').resample('W')['price'].sum().dropna().reset_index()
print (df1)
arrivalDate price
0 2017-04-02 4457.0
1 2017-04-30 18291.0
2 2017-05-07 4588.0
然后转换日期时间范围并减去 6
天并最后创建 list
:
df1['arrivalDate'] = (df1['arrivalDate']-pd.offsets.DateOffset(days=6)).dt.strftime('%d %b')+
' to ' +
df1['arrivalDate'].dt.strftime('%d %b')
#if prices are always int
df1['price'] = df1['price'].astype(int)
print (df1)
arrivalDate price
0 27 Mar to 02 Apr 4457
1 24 Apr to 30 Apr 18291
2 01 May to 07 May 4588
L = df1.to_dict(orient='record')
print (L)
[{'arrivalDate': '27 Mar to 02 Apr', 'price': 4457},
{'arrivalDate': '24 Apr to 30 Apr', 'price': 18291},
{'arrivalDate': '01 May to 07 May', 'price': 4588}]
编辑:
#https://bpaste.net/show/909564ed4cb1
data = [
{
"price": 3050,
"arrivalDate": 1489536000000
},
{
"price": 3240,
"arrivalDate": 1489622400000
},
...
...
{
"price": 3150,
"arrivalDate": 1493611200000
},
{
"price": 3150,
"arrivalDate": 1493697600000
}
]
df = pd.DataFrame(data)
df['arrivalDate'] = pd.to_datetime(df.arrivalDate, unit='ms')
df1 = df.resample('W', on='arrivalDate')['price'].sum().dropna().reset_index()
print (df1)
arrivalDate price
0 2017-03-19 12460.0
1 2017-03-26 15930.0
2 2017-04-02 15735.0
3 2017-04-09 18880.0
4 2017-04-30 12640.0
5 2017-05-07 6300.0
df1['arrivalDate'] = (df1['arrivalDate'] - pd.offsets.DateOffset(days=6)).dt.strftime('%d %b') + ' to ' + \
df1['arrivalDate'].dt.strftime('%d %b')
#if pries are always int
df1['price'] = df1['price'].astype(int)
print (df1)
arrivalDate price
0 13 Mar to 19 Mar 12460
1 20 Mar to 26 Mar 15930
2 27 Mar to 02 Apr 15735
3 03 Apr to 09 Apr 18880
4 24 Apr to 30 Apr 12640
5 01 May to 07 May 6300
L = df1.to_dict(orient='record')
print (L)
[{'arrivalDate': '13 Mar to 19 Mar', 'price': 12460},
{'arrivalDate': '20 Mar to 26 Mar', 'price': 15930},
{'arrivalDate': '27 Mar to 02 Apr', 'price': 15735},
{'arrivalDate': '03 Apr to 09 Apr', 'price': 18880},
{'arrivalDate': '24 Apr to 30 Apr', 'price': 12640},
{'arrivalDate': '01 May to 07 May', 'price': 6300}]
检查df
:
print (df)
arrivalDate price
0 2017-03-15 00:00:00 3050
1 2017-03-16 00:00:00 3240
2 2017-03-17 00:00:00 3120
3 2017-03-18 00:00:00 3050
4 2017-03-20 00:00:00 3200
5 2017-03-22 00:00:00 3200
6 2017-03-23 00:00:00 3210
7 2017-03-24 00:00:00 3200
8 2017-03-25 00:00:00 3120
9 2017-03-27 00:00:00 3100
10 2017-03-28 00:00:00 3240
11 2017-03-30 00:00:00 3100
12 2017-03-31 00:00:00 3145
13 2017-04-01 00:00:00 3150
14 2017-04-04 00:00:00 3150
15 2017-04-05 00:00:00 3150
16 2017-04-06 00:00:00 3110
17 2017-04-07 00:00:00 3210
18 2017-04-08 00:00:00 3210
19 2017-04-09 00:00:00 3050
20 2017-04-26 04:00:00 3110
21 2017-04-27 04:00:00 3210
22 2017-04-28 04:00:00 3200
23 2017-04-29 04:00:00 3120
24 2017-05-01 04:00:00 3150
25 2017-05-02 04:00:00 3150
关于python - 使用 pandas 根据纪元时间每天和每周对数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43741004/
我喜欢 smartcase,也喜欢 * 和 # 搜索命令。但我更希望 * 和 # 搜索命令区分大小写,而/和 ?搜索命令遵循 smartcase 启发式。 是否有隐藏在某个地方我还没有找到的设置?我宁
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 10年前关闭。 Improve this qu
从以下网站,我找到了执行java AD身份验证的代码。 http://java2db.com/jndi-ldap-programming/solution-to-sslhandshakeexcepti
似乎 melt 会使用 id 列和堆叠的测量变量 reshape 您的数据框,然后通过转换让您执行聚合。 ddply,从 plyr 包看起来非常相似..你给它一个数据框,几个用于分组的列变量和一个聚合
我的问题是关于 memcached。 Facebook 使用 memcached 作为其结构化数据的缓存,以减少用户的延迟。他们在 Linux 上使用 UDP 优化了 memcached 的性能。 h
在 Camel route ,我正在使用 exec 组件通过 grep 进行 curl ,但使用 ${HOSTNAME} 的 grep 无法正常工作,下面是我的 Camel 路线。请在这方面寻求帮助。
我正在尝试执行相当复杂的查询,在其中我可以排除与特定条件集匹配的项目。这是一个 super 简化的模型来解释我的困境: class Thing(models.Model) user = mod
我正在尝试执行相当复杂的查询,我可以在其中排除符合特定条件集的项目。这里有一个 super 简化的模型来解释我的困境: class Thing(models.Model) user = mod
我发现了很多嵌入/内容项目的旧方法,并且我遵循了在这里找到的最新方法(我假设):https://blog.angular-university.io/angular-ng-content/ 我正在尝试
我正在寻找如何使用 fastify-nextjs 启动 fastify-cli 的建议 我曾尝试将代码简单地添加到建议的位置,但它不起作用。 'use strict' const path = req
我正在尝试将振幅 js 与 React 和 Gatsby 集成。做 gatsby developer 时一切看起来都不错,因为它发生在浏览器中,但是当我尝试 gatsby build 时,我收到以下错
我试图避免过度执行空值检查,但同时我想在需要使代码健壮的时候进行空值检查。但有时我觉得它开始变得如此防御,因为我没有实现 API。然后我避免了一些空检查,但是当我开始单元测试时,它开始总是等待运行时异
尝试进行包含一些 NOT 的 Kibana 搜索,但获得包含 NOT 的结果,因此猜测我的语法不正确: "chocolate" AND "milk" AND NOT "cow" AND NOT "tr
我正在使用开源代码共享包在 iOS 中进行 facebook 集成,但收到错误“FT_Load_Glyph failed: glyph 65535: error 6”。我在另一台 mac 机器上尝试了
我正在尝试估计一个标准的 tobit 模型,该模型被审查为零。 变量是 因变量 : 幸福 自变量 : 城市(芝加哥,纽约), 性别(男,女), 就业(0=失业,1=就业), 工作类型(失业,蓝色,白色
我有一个像这样的项目布局 样本/ 一种/ 源/ 主要的/ java / java 资源/ .jpg 乙/ 源/ 主要的/ java / B.java 资源/ B.jpg 构建.gradle 设置.gr
如何循环遍历数组中的多个属性以及如何使用map函数将数组中的多个属性显示到网页 import React, { Component } from 'react'; import './App.css'
我有一个 JavaScript 函数,它进行 AJAX 调用以返回一些数据,该调用是在选择列表更改事件上触发的。 我尝试了多种方法来在等待时显示加载程序,因为它当前暂停了选择列表,从客户的 Angul
可能以前问过,但找不到。 我正在用以下形式写很多语句: if (bar.getFoo() != null) { this.foo = bar.getFoo(); } 我想到了三元运算符,但我认
我有一个表单,在将其发送到 PHP 之前我正在执行一些验证 JavaScript,验证后的 JavaScript 函数会发布用户在 中输入的文本。页面底部的标签;然而,此消息显示短暂,然后消失...
我是一名优秀的程序员,十分优秀!