在这篇文章中,我们将带领您了解熊猫对HDFStore中的大数据进行“分组依据”查询?的全貌,包括熊猫数据的相关情况。同时,我们还将为您介绍有关H2DB-列必须在“分组依据”列表中、linq分组依据并选
在这篇文章中,我们将带领您了解熊猫对HDFStore中的大数据进行“分组依据”查询?的全貌,包括熊猫 数据的相关情况。同时,我们还将为您介绍有关H2 DB-列必须在“分组依据”列表中、linq分组依据并选择内部分组依据给出错误EFcore、Meteor中的“分组依据”聚合查询是否可行?、MySql根据分组依据对查询的行进行编号的知识,以帮助您更好地理解这个主题。
本文目录一览:- 熊猫对HDFStore中的大数据进行“分组依据”查询?(熊猫 数据)
- H2 DB-列必须在“分组依据”列表中
- linq分组依据并选择内部分组依据给出错误EFcore
- Meteor中的“分组依据”聚合查询是否可行?
- MySql根据分组依据对查询的行进行编号
熊猫对HDFStore中的大数据进行“分组依据”查询?(熊猫 数据)
我有大约700万行,HDFStore
其中有60列以上。数据超出了我的内存容量。我正在基于列“
A”的值将数据聚合到组中。熊猫拆分/汇总/合并的文档假定我已经将所有数据都存储在了DataFrame
,但是我无法将整个商店读取到内存中DataFrame
。在分组数据的正确方法是HDFStore
什么?
答案1
小编典典这是一个完整的例子。
import numpy as npimport pandas as pdimport osfname = ''groupby.h5''# create a framedf = pd.DataFrame({''A'': [''foo'', ''foo'', ''foo'', ''foo'', ''bar'', ''bar'', ''bar'', ''bar'', ''foo'', ''foo'', ''foo''], ''B'': [''one'', ''one'', ''one'', ''two'', ''one'', ''one'', ''one'', ''two'', ''two'', ''two'', ''one''], ''C'': [''dull'', ''dull'', ''shiny'', ''dull'', ''dull'', ''shiny'', ''shiny'', ''dull'', ''shiny'', ''shiny'', ''shiny''], ''D'': np.random.randn(11), ''E'': np.random.randn(11), ''F'': np.random.randn(11)})# create the store and append, using data_columns where I possibily# could aggregatewith pd.get_store(fname) as store: store.append(''df'',df,data_columns=[''A'',''B'',''C'']) print "store:\n%s" % store print "\ndf:\n%s" % store[''df''] # get the groups groups = store.select_column(''df'',''A'').unique() print "\ngroups:%s" % groups # iterate over the groups and apply my operations l = [] for g in groups: grp = store.select(''df'',where = [ ''A=%s'' % g ]) # this is a regular frame, aggregate however you would like l.append(grp[[''D'',''E'',''F'']].sum()) print "\nresult:\n%s" % pd.concat(l, keys = groups)os.remove(fname)
输出量
store:<class ''pandas.io.pytables.HDFStore''>File path: groupby.h5/df frame_table (typ->appendable,nrows->11,ncols->6,indexers->[index],dc->[A,B,C])df: A B C D E F0 foo one dull -0.815212 -1.195488 -1.3469801 foo one dull -1.111686 -1.814385 -0.9743272 foo one shiny -1.069152 -1.926265 0.3603183 foo two dull -0.472180 0.698369 -1.0070104 bar one dull 1.329867 0.709621 1.8778985 bar one shiny -0.962906 0.489594 -0.6630686 bar one shiny -0.657922 -0.377705 0.0657907 bar two dull -0.172245 1.694245 1.3741898 foo two shiny -0.780877 -2.334895 -2.7474049 foo two shiny -0.257413 0.577804 -0.15931610 foo one shiny 0.737597 1.979373 -0.236070groups:Index([bar, foo], dtype=object)result:bar D -0.463206 E 2.515754 F 2.654810foo D -3.768923 E -4.015488 F -6.110789dtype: float64
一些警告:
1)如果您的组密度相对较低,则此方法很有意义。大约数百或数千个组。如果获得的收益更多,则效率更高(但方法更复杂),并且您正在应用的函数(在这种情况下sum
)将变得更加严格。
本质上,您将按块对整个商店进行迭代,然后按组进行分组,但将组仅进行半折叠(想象一下是做一个均值,因此您需要保持运行总数和运行计数,然后在最后进行除法)
。因此,某些操作会有些棘手,但可能会处理许多组(而且速度非常快)。
2)可以通过保存坐标(例如组位置,但是稍微复杂一点)来提高效率。
3)上面的方案无法进行多重分组(有可能,但是需要一种类似于2的方法)
4)您要分组的列,必须是data_column!
5)您可以在选择的btw中组合您想要的任何其他过滤器(这是进行多组btw的时髦方法,您仅在它们的乘积上形成2个唯一的group和iterator列表,如果有很多,效率就不是很高组,但可以工作)
高温超导
让我知道这是否适合您
H2 DB-列必须在“分组依据”列表中
我正在使用H2-DB访问静态数据库…
我有一张桌子,看起来像:
COUNTRY STATE CITY LAT LNG COUNTRYID STATEID CITYID "Germany" "Berlin" "" 1.23 1.23 1 1 0"Germany" "München" "" 1.23 1.23 1 2 0"USA" "Alabama" "Auburn" 1.23 1.23 2 1 1"USA" "Alabama" "Birmingham" 1.23 1.23 2 1 2"USA" "Alaska" "Anchorage" 1.23 1.23 2 2 1"USA" "Alaska" "Cordova" 1.23 1.23 2 2 2
它的名单很多,有很多国家,其中大多数只有国家和州(例如德国在这里,而州是城市),也有一个城市(在这里是美国)…
问题是现在,当我查询
SELECT * FROM MyTable WHERE COUNTRY = ''Germany'' group by STATE order by STATE
为了得到州(或城市)的排序列表,我收到一条错误消息,说
Field CITY must be in the GROUP BY list
如果该行有一个城市,我需要整行,否则我只需要State列,但是查询后我可以知道,是否使用了city列,所以我必须查询“ *”的“ STATE”
查询应该可以,还是?在MySql上它可以正常工作…所以这里出了什么问题?
发现此内容是否有帮助:http
:
//www.h2database.com/javadoc/org/h2/constant/ErrorCode.html#c90016
梅丁
答案1
小编典典MySQL就此而言是坏的。它允许聚合函数GROUP BY
的groupby
或参数中都不存在的列。实际上,文档警告不要使用此扩展名。
因此,您可以执行以下操作:
SELECT stateFROM DIYANETWHERE COUNTRY = ''Germany''GROUP BY STATE ORDER BY STATE;
或类似这样的东西:
SELECT state, min(city), min(lat), . . .FROM DIYANETWHERE COUNTRY = ''Germany''GROUP BY STATE ORDER BY STATE;
但是这SELECT *
是不允许的,并且没有任何意义。
linq分组依据并选择内部分组依据给出错误EFcore
这是我最能解决您的查询的问题。
var rslt =
(
await
(
from d in db.statMonth.Include(f => f.MasterData)
where d.m_turbine_id == IPAddress.Parse(id)
where d.m_date >= frm
group d by new { d.m_date.Month,d.m_date.Year } into g
orderby g.Key.Month
select new
{
Year = g.Key.Year,Date = g.Key.Month,Production = g.Sum(s => s.m_energy_prod),m_wind_speed = g.Average(s => s.m_wind_speed),Availability = g.Average(s => s.m_availability),Comments = g.Select(s => s.Comments).ToArray(),Countries = g.Select(i => i.Country).ToArray(),}
)
.ToListAsync()
)
.Select(g => new statisticsDaily
{
Year = g.Year
Date = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(g.Date),Production = g.Production,m_wind_speed = g.m_wind_speed,Availability = g.Availability,Comments = String.Join(",",g.Comments),Countries = String.Join(",g.Countries),})
.ToList();
您可以检查一下现在遇到什么错误吗?
Meteor中的“分组依据”聚合查询是否可行?
Meteor.publish "top10",-> Records.group key: {name:true} reduce: (obj,agg) -> agg.count++ initial: {count:0}
Meteor使用node-mongo-native在服务器端执行CURD,而在客户端使用minimalongo.
并且Meteor在两侧保持相同的API.
该文件说 –
In this release,Minimongo has some limitations:
…
findAndModify,upsert,aggregate functions,and map/reduce aren’t supported.
但是,node-mongo-native支持它们,所以我认为Meteor不会为我们公开相关的API.你可以看看packages / mongo-livedata / mongo_driver.js,并自己帮忙.
MySql根据分组依据对查询的行进行编号
您的代码应该执行您想要的操作-但是,您提到group by
,这与此处无关。查询应该只是:
select name,city,row_number() over(partition by city order by name) - 1 rn
from mytable
,
要获取您指定的结果:
select name,row_number() over (partition by city,order by name) as count
from t
order by count(*) over (partition by city) desc,-- number of rows in city
city,name;
您似乎想要按城市中名称的数量对城市进行排序。
今天关于熊猫对HDFStore中的大数据进行“分组依据”查询?和熊猫 数据的介绍到此结束,谢谢您的阅读,有关H2 DB-列必须在“分组依据”列表中、linq分组依据并选择内部分组依据给出错误EFcore、Meteor中的“分组依据”聚合查询是否可行?、MySql根据分组依据对查询的行进行编号等更多相关知识的信息可以在本站进行查询。
本文标签: