"Méthode de conversion par lots des caractères contenus dans les données" https://qiita.com/wellwell3176/questions/1345ab14964d2a050b5a
J'ai créé un programme basé sur les réponses aux questions ci-dessus. Je l'ai posté pour le fractionnement car il était trop long à mettre sur la page des questions.
Pour les données brutes du tableau 1, utilisez la table de conversion du tableau 2 pour séparer et convertir les symboles et les stocker dans une nouvelle colonne. Dans ces données, la table de conversion du tableau 2 est petite, mais dans les données réelles, il existe environ 30 types de symboles et environ 10 types d'étiquettes de colonne, donc Il y avait un désir de "compiler la table de conversion autant que possible avec un seul fichier Excel".
Tableau 1 Données brutes
No. | Nom du cheval |
---|---|
1 | Koshihikari ○ ③ |
2 | Sasanishiki ◎ |
3 | Yomogi Dango ✕ ② |
4 | Tanaka Katarou ① |
Tableau 2 table de conversion
Attentes personnelles | Prévisions de journaux | |
---|---|---|
① | N ° 1 | |
② | N ° 2 | |
③ | numéro 3 | |
◎ | favori | |
○ | Compteur | |
✕ | Grand trou |
Produit fini
import pandas as pd
#Détourner le programme généraliste présenté dans la question et la réponse
def tagging(df, column, trdict): #DataFrame d'origine,Colonnes utilisées pour la classification,Dictionnaire de classification
for key, d in trdict.items():
#Processus pour chaque 1ère clé (prévision personnelle, prévision journal) de la base de données.
df_ = df[column].str.extract(f'({"|".join(d.keys())})')
for k, v in d.items():
df_ = df_.replace(k, v)
#2nd key(◎ ✕ etc.)Après avoir extrait et créé une nouvelle colonne, convertissez la 2ème clé et la valeur
df[column] = df[column].str.replace(k, "")
df[key] = df_.fillna("")
#Suppression de la deuxième clé de la colonne source
return df
df = pd.DataFrame( #Créez des exemples de données. En fait, lire Excel
data=[{
'No.': 1,
'horse': 'Koshihikari ○ ③',
}, {
'No.': 2,
'horse': 'Sasanishiki ◎',
}, {
'No.': 3,
'horse': 'Yomogi Dango ✕②',
}, {
'No.': 4,
'horse': 'Tanaka Katarou ①',
}])
dict_raw = pd.read_excel("hogehoge.xlsx",index_col=0)
#hogehoge.xlsx est égal aux données Excel du tableau 2
dict_process=dict_raw.to_dict(orient='dict')
#to_Convertir au format dictionnaire avec dict
list_key=list(dict_process.keys())
#Puisqu'il est utilisé dans l'instruction for, le contenu de la clé est répertorié (elle ne peut pas être sélectionnée comme cible de l'instruction for car elle n'a pas d'ordre si elle reste dans le dictionnaire).
dict_comp=dict() #update()Est utilisé, de sorte que le produit fini est d'abord généré sous forme de dictionnaire vide.
#Supprimez la clé sans valeur du dictionnaire (dans ce cas,"Attentes personnelles":"◎"Nan est stocké et dérange)
for i in list_key:
output_dict = dict(filter(lambda item: item[1] is not np.nan, d3[i].items()))
dict_comp.update({i:output_dict})
tagging(df,"horse",dict_comp)
<Résultat de sortie>
No.prévisions du journal des prévisions personnelles du cheval
0 1 Koshihikari n ° 3 Opposition
1 2 Sasanishiki préféré
2 3 Grand trou Yomogi Dango n ° 2
3 4 Tanaka Katarou n ° 1
Source de référence pour le filtrage du dictionnaire: https://tombomemo.com/python-dict-filter/
Recommended Posts