Par exemple, une liste ayant des sous-éléments sous la forme: [ 'mm, dd, yyyy, hh, mm' valeur '']:valeurs agrégées par mois, année ou jour
A = [
['09,02,2011,09,34' 'apple'],
['09,05,2011,10,20' 'juice'],
['06,04,2012,09,38' 'juice'],
['06,04,2012,09,38' 'juice'],
['06,04,2012,09,40' 'apple'],
['06,04,2012,09,40' 'juice'],
['06,04,2012,09,42' 'green'],
['06,04,2012,23,08' 'juice'],
['06,04,2012,23,10' 'juice'],
['06,04,2012,23,10' 'ferrari'],
['07,03,2012,20,12' 'juice'],
['07,07,2012,21,03' 'people'],
['07,07,2012,21,04' 'juice'],
['07,07,2012,21,04' 'people'],
['07,07,2012,21,04' 'lime'],
['08,16,2012,08,55' 'juice'],
['08,16,2012,08,55' 'juice'],
['08,16,2012,08,55' 'lime'],
['08,16,2012,08,55' 'lime'],
['08,16,2012,08,56' 'juice'],
['08,16,2012,08,57' 'juice'],
['08,16,2012,08,57' 'andy'],
['01,16,2013,03,20' 'people'],
['02,10,2013,04,59' 'lime']
]
Je suis recherche d'une stratégie d'agrégation solide qui permet d'agréger les valeurs en utilisant les mois (1-12) et l'année (max_year à min_year) et les jours mensuels (0-30). Plus précisément en indiquant, pour chacune des valeurs dans les sous-éléments liste:
Ainsi, si le type d'agrégation est année, alors:
out = [
{
'name': 'value1_name',
'series': [['min_year', 'count']...['max_year', 'count']]
},
{
'name': 'value2_name',
'series':[['min_year', 'count']...['max_year', 'count']]
}, ...
]
Si le type d'agrégation est le mois, puis:
out = [
{
'name': 'value1_name',
'series': [['01', 'count']...['12', 'count']]
},
{
'name': 'value2_name',
'series':[['02', 'count']...['12', 'count']]
}, ...
]
Et si le type d'agrégation est fourni jours, puis:
out = [
{
'name': 'value1_name',
'series': [['01', 'count']...['30', 'count']]
},
{
'name': 'value2_name',
'series':[['01', 'count']...['30', 'count']]
}, ...
]
la douleur entière dans ce issu Pour moi, e consiste à remplir les valeurs du mois, du jour ou de l'année manquantes pour les types d'agrégation respectifs. Ainsi, par exemple, si le type d'agrégation est l'année, et j'agrège toutes les valeurs « jus », puis:
out = [
{
'name': 'juice',
'series': [['2011', '1'],['2012', '11'],['2013', '0']]
},..
et même est la question pour les mois et les jours. L'essentiel est que toutes les valeurs ('pomme', 'jus', etc.) aient des longueurs égales, ce qui signifie que si 'ferrari' n'existe pas en 2011 et 2013, alors sa série devrait avoir ['2011' , '0'] et ['2013', '0']. De même, si « ferrari » n'existe pas dans un mois, sauf juin (« 06 »), alors la série devrait ressembler à:
'series': [
['01', '0'],
['02', '0'],
['03', '0'],
['04', '0'],
['05', '0'],
['06', '1'],
['07', '0'],
['08', '0'],
['09', '0'],
['10', '0'],
['11', '0'],
['12', '0']
]
..et même est le cas pour les jours ..
Quelle est la meilleure stratégie possible que je puisse avoir ici? Merci beaucoup.
Eh bien, vous semblez avoir une description assez complète du problème. Avez-vous essayé de coder quelque chose pour cela et êtes-vous coincé? Si oui, postez le code et dites-nous pourquoi vous êtes bloqué. Sinon, continuez à coder! – Brionius
C'est ce que je fais :-) mais juste au cas où il y aurait un meilleur exemple là-bas ... – user2480542
Il serait probablement utile de commencer avec une bien meilleure structure de données - par exemple, [09, 02, 2011, 09, 34, 'apple'] 'au lieu de' ['09, 02,2011,09,34 '' apple '] '(surtout que mettre deux chaînes côte à côte comme ça ne fait que les concaténer). Ensuite, vous pouvez trier, grouper, etc. par n'importe quel index avec une compréhension triviale. – abarnert