J'ai reçu une demande de plusieurs connaissances disant que "les données extraites du point de vente sont difficiles à gérer, veuillez donc les agréger", j'ai donc créé un script pour les convertir en données faciles à gérer avec Python.
Ouvrez-le avec un éditeur de texte et vérifiez-le.
zitem.csv
0000,0000,0000,20160000,201600000000,1000
Code menu / code PLU,Code personnel,Nom du produit,Catégories,Catégories名称,sous/ensemble/Commentaire Code du menu parent,Nom du menu parent,Prix unitaire,1 code de tabulation gratuit,1 nom d'agrégat gratuit,Code de tabulation gratuit 2,Nom global gratuit 2,Code de tabulation gratuit 3,Nom d'agrégat 3 gratuit,Classement à emporter,Classement à emporter名称,原Prix unitaire,Code GP,Nom du GP,Code DP,Nom DP,Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 01 Nombre d'apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 02 Nombre d'apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 03 Nombre d'apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 04 Nombre d'apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 05 Nombre d'apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 06 Nombre d'apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 07 Nombre d'apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 08 Nombre d'apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 09 Nombre d'apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 10 apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 11 apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 12 apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 13 apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 14 apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 15 apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 16 apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 17 apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 18 apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 19 apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 20 apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 21 apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 22 apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 23 apparitions (points),Heure de début du fuseau horaire,Heure de fin du fuseau horaire,Fuseau horaire 24 apparitions (points),Nombre d'employeurs,Nombre de promotions,Données par produit 1,Données par produit 2,Données par produit 3,Fuseau horaire 01 points de réduction de valeur,Valeur du fuseau horaire 01 montant de la remise,Fuseau horaire 01 Numéro promotionnel,Réserve de fuseau horaire 01,Fuseau horaire 02 points de réduction de valeur,Valeur du fuseau horaire 02 montant de la remise,Fuseau horaire 02 Numéro promotionnel,Réserve du fuseau horaire 02,Fuseau horaire 03 points de réduction de valeur,Valeur du fuseau horaire 03 montant de la remise,Fuseau horaire 03 Numéro promotionnel,Réserve du fuseau horaire 03,Fuseau horaire 04 points de réduction de valeur,Valeur du fuseau horaire 04 montant de la remise,Fuseau horaire 04 Numéro promotionnel,Réserve du fuseau horaire 04,Fuseau horaire 05 points de réduction de valeur,Valeur du fuseau horaire 05 montant de la remise,Fuseau horaire 05 Numéro promotionnel,Réserve du fuseau horaire 05,Fuseau horaire 06 points de réduction de valeur,Valeur du fuseau horaire 06 montant de la remise,Fuseau horaire 06 Numéro promotionnel,Réserve du fuseau horaire 06,Fuseau horaire 07 points de réduction de valeur,Valeur du fuseau horaire 07 montant de la remise,Fuseau horaire 07 Numéro promotionnel,Réserve du fuseau horaire 07,Fuseau horaire 08 points de réduction de valeur,Valeur du fuseau horaire 08 montant de la remise,Fuseau horaire 08 Numéro promotionnel,Réserve du fuseau horaire 08,Fuseau horaire 09 points de réduction de valeur,Valeur du fuseau horaire 09 montant de la remise,Fuseau horaire 09 Numéro promotionnel,Réserve du fuseau horaire 09,Fuseau horaire 10 points de réduction,Valeur de la remise sur le fuseau horaire 10,Fuseau horaire 10 Promos,Fuseau horaire 10 disponible,Fuseau horaire 11 points de réduction de valeur,Valeur de la remise sur le fuseau horaire 11,Fuseau horaire 11 Promos,Réserve du fuseau horaire 11,Remise de 12 valeurs pour les fuseaux horaires,Remise de 12 valeurs pour le fuseau horaire,Fuseau horaire 12 Promos,Fuseau horaire 12 disponible,Fuseau horaire 13 points de réduction de valeur,Valeur de la remise sur le fuseau horaire 13,Fuseau horaire 13 Promos,Réserve du fuseau horaire 13,Fuseau horaire 14 points de réduction de valeur,Valeur de la remise sur le fuseau horaire 14,Fuseau horaire 14 Promos,Fuseau horaire 14 disponible,Fuseau horaire 15 points de réduction de valeur,Valeur de la remise sur le fuseau horaire 15,Fuseau horaire 15 Promos,Fuseau horaire 15 disponible,Fuseau horaire 16 points de réduction de valeur,Valeur de la réduction du fuseau horaire 16,Fuseau horaire 16 Promos,Réserve du fuseau horaire 16,Fuseau horaire 17 points de réduction de valeur,Valeur de la remise sur le fuseau horaire 17,Fuseau horaire 17 Promos,Réserve du fuseau horaire 17,Fuseau horaire 18 points de réduction de valeur,Valeur de la remise sur le fuseau horaire 18,Fuseau horaire 18 Promos,Réserve du fuseau horaire 18,Fuseau horaire 19 points de réduction,Valeur de la remise sur le fuseau horaire 19,Fuseau horaire 19 Promos,Réserve du fuseau horaire 19,Fuseau horaire 20 points de réduction,Valeur de la remise sur le fuseau horaire 20,Fuseau horaire 20 Promos,Réserve du fuseau horaire 20,Fuseau horaire 21 points de réduction,Valeur de la remise sur le fuseau horaire 21,Fuseau horaire 21 Numéro promotionnel,Réserve du fuseau horaire 21,Fuseau horaire 22 points de réduction de valeur,Valeur de la remise sur le fuseau horaire 22,Fuseau horaire 22 Numéro promotionnel,Réserve du fuseau horaire 22,Fuseau horaire 23 points de réduction de valeur,Valeur de la remise sur le fuseau horaire 23,Fuseau horaire 23 Numéro promotionnel,Réserve du fuseau horaire 23,Fuseau horaire 24 points de réduction,Montant de la remise de valeur de 24 fuseau horaire,Fuseau horaire 24 Promos,Fuseau horaire 24 disponible
0000000000000,0000000000000,Échantillon 1,00,Principale,0000, ,+001200,01,Gratuit 1,01,Gratuit 2,01,Gratuit 3,0,Nourriture et boisson dans le magasin,+000000,01,Repas,01,eau,0000,0059,+0000,0100,0159,+0000,0200,0259,+0000,0300,0359,+0000,0400,0459,+0000,0500,0559,+0000,0600,0659,+0000,0700,0759,+0000,0800,0859,+0000,0900,0959,+0000,1000,1059,+0000,1100,1159,+0000,1200,1259,+0000,1300,1359,+0000,1400,1459,+0000,1500,1559,+0000,1600,1659,+0000,1700,1759,+0002,1800,1859,+0000,1900,1959,+0000,2000,2059,+0000,2100,2159,+0000,2200,2259,+0000,2300,2359,+0000,+0000,+0000,+0000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000
0000000000000,0000000000000,Échantillon de test,00,Principale,0000, ,+000400,01,Gratuit 1,01,Gratuit 2,01,Gratuit 3,0,Nourriture et boisson dans le magasin,+000000,01,Repas,01,eau,0000,0059,+0000,0100,0159,+0000,0200,0259,+0000,0300,0359,+0000,0400,0459,+0000,0500,0559,+0000,0600,0659,+0000,0700,0759,+0000,0800,0859,+0000,0900,0959,+0000,1000,1059,+0000,1100,1159,+0000,1200,1259,+0000,1300,1359,+0000,1400,1459,+0000,1500,1559,+0000,1600,1659,+0000,1700,1759,+0000,1800,1859,+0000,1900,1959,+0000,2000,2059,+0000,2100,2159,+0000,2200,2259,+0000,2300,2359,+0000,+0000,+0000,+0000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000,+0000,+0000000,+0000,+0000
(Ci-après omis)
... Certes, il est difficile de l'utiliser tel quel (-_-;)
Quand j'ai demandé un peu sur le contenu et les demandes des données,
L'en-tête est le code du menu, le nom du produit et le prix unitaire, et organise le nombre de produits qui sont apparus pour chaque heure par la suite.
output.csv
Code de menu,0,1,2,〜,9999
Nom du produit,Échantillon 1,Échantillon 2,Échantillon 3,〜,Échantillon 10000
Prix unitaire,100,200,300,〜10000
2016/1/1 0:00,1,2,3,〜,10
2016/1/1 1:00,4,5,6,〜,0
2016/1/1 2:00,6,2,9,〜,20
(Omission)
2016/1/1 23:00,1,2,3,〜,10
python
import pandas as pd
import os
import datetime
Le nom du fichier étant fixe, définissez le nom du fichier et récupérez les données de date à partir de la date de création et lisez-le.
python
#nom de fichier
filename = "zitem.csv"
#Acquisition des données de date
dt = datetime.datetime.fromtimestamp(os.stat(filename).st_mtime)
y = dt.year
m = dt.month
d = dt.day
#Lecture des données
df = pd.read_csv(filename,encoding="SHIFT-JIS",skiprows=1)
En ce qui concerne le nom du produit et le prix, il est dit qu'il y a des moments où il est inclus dans les données CSV et il y a des moments où il n'est pas inclus, donc en tenant compte de la collecte de plusieurs données à l'avenir, préparez un cadre pour le moment et la partie avec les données Je vais le remplir.
python
cnt = 10001
names = [""] * cnt
prices = [0] * cnt
for i in range(len(df)):
key = int(df.loc[i][0]) + 1
names[key] = df.loc[i][2]
prices[key] = int(df.loc[i][7])
Comme il est compris entre 0 et 9999, il s'agit de 10000 types de données, mais comme les données de date et d'heure sont ajoutées, elles sont transformées en tableau de données 10001.
Il semble que les données du nombre de ventes soient incluses dans toutes les 3 colonnes de la 23e colonne, alors obtenez les données pendant 24 heures toutes les 3 colonnes.
python
x = 23
datas = []
for i in range(24):
items = [0] * cnt
items[0] = datetime.datetime(y,m,d,i,0).strftime("%Y-%m-%d %H:%M")
for j in range(len(df)):
key = df.loc[j][0] + 1
num = int(df.loc[j][x])
items[key] = num
datas.append(items)
x += 3
Enregistrez les informations acquises dans un fichier CSV.
python
f = open('output.csv', 'w')
sName = ""
sPrice = ""
for i in range(len(names)):
sName += names[i] + ","
sPrice += str(prices[i]) + ","
f.write(sName + "\n" + sPrice + "\n")
for i in range(len(datas)):
data = datas[i]
sData = ""
for j in range(len(data)):
sData += str(data[j]) + ","
f.write(sData + "\n")
f.close()
Enregistrez le code jusqu'à ce point sous "pos.py" et exécutez-le.
python
$ python pos.py
l'a fait!
pos.py
import pandas as pd
import os
import datetime
#nom de fichier
filename = "zitem.csv"
#Acquisition des données de date
dt = datetime.datetime.fromtimestamp(os.stat(filename).st_mtime)
y = dt.year
m = dt.month
d = dt.day
#Lecture des données
df = pd.read_csv(filename,encoding="SHIFT-JIS",skiprows=1)
#Obtenez les données dont vous avez besoin
cnt = 10001
names = [""] * cnt
prices = [0] * cnt
for i in range(len(df)):
key = int(df.loc[i][0]) + 1
names[key] = df.loc[i][2]
prices[key] = int(df.loc[i][7])
x = 23
datas = []
for i in range(24):
items = [0] * cnt
items[0] = datetime.datetime(y,m,d,i,0).strftime("%Y-%m-%d %H:%M")
for j in range(len(df)):
key = df.loc[j][0] + 1
num = int(df.loc[j][x])
items[key] = num
datas.append(items)
x += 3
#Sortie de fichier
f = open('output.csv', 'w')
sName = ""
sPrice = ""
for i in range(len(names)):
sName += names[i] + ","
sPrice += str(prices[i]) + ","
f.write(sName + "\n" + sPrice + "\n")
for i in range(len(datas)):
data = datas[i]
sData = ""
for j in range(len(data)):
sData += str(data[j]) + ","
f.write(sData + "\n")
f.close()
Il doit y avoir un meilleur moyen!
Recommended Posts