Extraction de données

Résolu/Fermé
RomainGA Messages postés 109 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 20 avril 2024 - 3 avril 2018 à 14:42
RomainGA Messages postés 109 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 20 avril 2024 - 3 avril 2018 à 16:05
Bonjour,
Input:
#nombre de RT
message=data['full_text']
message.head(5)

Output:
0    RT @chaeyeonbot: Congratulations to DIA's Mann...
1 RT @infoCinelandia: These are the Latin Americ...
2 RT @GMA: "I owe this, and so much more, to so ...
3 RT @infoCinelandia: These are the Latin Americ...
4 @KobeBryant and @GlenKeanePrd, winners of the ...
Name: full_text, dtype: object


J'ai pour missions d'afficher le nombre de "RT" et d'afficher le pseudo marqué juste après le "@"
pourriez vous m'indiquez comment faire.

Cordialement.
Romain.

2 réponses

RomainGA Messages postés 109 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 20 avril 2024 6
3 avril 2018 à 15:04
Ah, j'ai failli oublié de vous prévenir:
je penses qu'il faut utilisé la fonction count() mais je n'arrive pas a l'employé.
Merci.
0
Bonjour.

D'où viennent ces données ? Avec quel module python ?

En partant de la chaîne de sortie.

>>> s = '''0 RT @chaeyeonbot: Congratulations to DIA's Mann...
... 1 RT @infoCinelandia: These are the Latin Americ...
... 2 RT @GMA: "I owe this, and so much more, to so ...
... 3 RT @infoCinelandia: These are the Latin Americ...
... 4 @KobeBryant and @GlenKeanePrd, winners of the ...'''
>>> 
>>> s.count('RT')
4
>>> for ligne in s.splitlines():
...     if 'RT' in ligne:
...         pseudo = ligne[ligne.find('@')+1:ligne.find(':')]
...         print(pseudo)
... 
chaeyeonbot
infoCinelandia
GMA
infoCinelandia

Une simple utilisation de str.find sur le @ et le : avec un slice permet de récupérér le pseudo.

Mais la solution de regarder s'il y a un RT dans la ligne n'est pas très sûre puisque cette chaîne de caractères peut se trouver dans un message.
Il faudrait mieux éclater la ligne avec str.split et regarder si le 2nd élément vaut RT.
Et pour enlever les carcatères @ et : du pseudo, un str.strip suffira.
0
RomainGA Messages postés 109 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 20 avril 2024 6
Modifié le 3 avril 2018 à 16:06
Merci pour cette réponse très complète.
les données proviennent d'un json placé sur mon ordi (cf data)

import pandas as pd
pd.set_option('display.height', 10000)
pd.set_option('display.max_rows', 5000)
pd.set_option('display.max_columns', 5000)
pd.set_option('display.width', 10000)

%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np

import warnings
warnings.filterwarnings("ignore")

import json
from datetime import datetime
data = pd.read_json(r'C:\Users\Romain\Downloads\file_2018-3-23-13.json')
datas = (pd.DataFrame.from_dict(data, orient='columns'))
datas


Cordialement.
Romain.
0