Skip to main content

Premièrement, examinez un petit besoin, en fait, c'est une coïncidence de groupe très populaire.


Aujourd'hui, je vous prendrai avec MySQL, Excel, Pandas, VBA et Python, respectivement.
C'est la première fois à l'ensemble du réseau! Bien sûr, cela peut également rendre les gens à mieux connaître le code de synthèse de paquets.

1. MYSQL pour atteindre les statistiques de paquet



Signal SQL:

Résultats:


SELECT deal_date, SUM(IF(AREA= 'A区', 1, 0)) 'A区', SUM(IF(AREA= 'B区', 1, 0)) 'B区', SUM(IF(AREA= 'C区', 1, 0)) 'C区' FROM order_info GROUP BY deal_date ;





]

Lundi, Excel Déployé des statistiques sur l'emballage



Créer une pivottable:

, puis le champ correspondant tiré la position droite: ]


import pandas as pddf = pd.read_csv("data.csv", encoding="gb18030")df Puis ouvrez l'option de la table de perspective pour annuler deux fois:



df.pivot_table(values="order_id", index="deal_date", columns="area", aggfunc="count", fill_value=0)



df.groupby(["deal_date", "area"])["order_id"].count().unstack(1, fill_value=0)


Troisième, Pandas pour groupes statistiques

df.groupby(["deal_date", "area"]).size().unstack(1, fill_value=0)

Résultats:



Utilisation de pivottage:


Option ExplicitFunction is_exists(name As String)Dim sht As WorksheetFor Each sht In Worksheets If sht.name = name Then is_exists = True Exit Function End IfNextis_exists = FalseEnd FunctionSub 分组统计() Dim LastRow, LastCol As Long Dim Sh As Worksheet 'Sh指代当前活动页 Set Sh = Sheets("data") '当前活动页的最后一行 LastRow = Sh.Cells(Rows.Count, 1).End(xlUp).row '当前活动页的最后一列 LastCol = Sh.Cells(1, Columns.Count).End(xlToLeft).Column '定义D为字典 Dim D As Object Set D = CreateObject("Scripting.Dictionary") Dim row, i As Integer Dim key, value As String For i = 2 To LastRow key = Sh.Cells(i, 3).value value = Sh.Cells(i, 4).value '如果在字典里 If Not D.exists(key) Then D.Add key, Array(0, 0, 0) End If row = D(key) If value = "A区" Then row(0) = row(0) + 1 ElseIf value = "B区" Then row(1) = row(1) + 1 ElseIf value = "C区" Then row(2) = row(2) + 1 End If D(key) = row Next '调试输出字典存储的内容 For Each key In D.keys() Debug.Print key & "," & Join(D(key), ",") Next Dim sht As Worksheet If is_exists("result") Then Sheets("result").Delete End If '在最后的位置增加一个sheet作为结果表 Sheets.Add After:=Sheets(Sheets.Count) Set sht = Sheets(Sheets.Count) sht.name = "result" '屏幕刷新=false Application.ScreenUpdating = False '下面写出数据到结果表中,首先写出标题行 sht.Range("A1").Resize(1, 4) = Application.Transpose(Array("deal_date", "A区", "B区", "C区")) sht.Range("A2").Resize(D.Count, 1) = Application.Transpose(D.keys) i = 2 For Each row In D.items() sht.Cells(i, 2).Resize(1, 3) = row i = i + 1 Next Application.ScreenUpdating = True End Sub
Le code ci-dessus équivaut aux activités de GroupBy:



Mais je suis souvent écrit:


4, des statistiques VBA de déploiement de paquets ] import csvfrom collections import namedtupleresult = {}columns = ["A区", "B区", "C区"]areas_map = dict(zip(columns, range(len(columns))))with open("data.csv", encoding="gb18030") as f: f_csv = csv.reader(f) headers = next(f_csv) resultSet = namedtuple("resultSet", headers) for r in f_csv: row = resultSet(*r) areas = result.setdefault(row.deal_date, [0, 0, 0]) areas[areas_map[row.area] += 1result
Après presque 1 heure d'efforts douloureux, le code VBA suivant a été préparé et simulé le processus de comptage de paquets:
avant de s'exécuter: {'2019/1/1': [1, 1, 1], '2019/1/2': [1, 1, 1], '2019/1/3': [1, 0, 1]}借助Pandas转换为表结构方便查看:pd.DataFrame.from_dict(result, 'index', columns=["A区", "B区", "C区"])"])
après avoir cliqué sur Le bouton: La fenêtre et la feuille de calcul ont immédiatement vu la sortie de sortie avec précision, voir immédiatement la répétition de sortie 2 parce que je fonctionne de manière continue deux fois. Années, Python effectue un paquet Code de déploiement: Résultats: Le processus Python simule les pandas pivottables pour faire des statistiques de paquet avec la simulation Python: Résultats: . ] Indépendamment de la langue et des outils, le principe fondamental des statistiques générales du groupe est la suivante: Aujourd'hui, je vous donne une manifestation , Excel, Pandas, VBA et Python Reconnectent la collection de paquets, pinUne comparaison, vous pourrez peut-être résumer les avantages et les inconvénients des différents outils et des scènes appliquées. Bienvenue pour laisser un message dans la zone de commentaire suivante, montrant vos opinions, partageant et interagir avec tout le monde.

Sujets

Catégories