Comment filtrer le fichier CSV sans pour autant Pandas? /Meilleur remplacement Pandas dans Pythonista/

J'essaie de faire une analyse de données sur Pythonista 3 /attachement iOS pour python/, Cependant, en raison des bibliothèques C pandas Il ne compile pas dans l'appareil iOS.

Y a-t-il un remplacement Pandas?
Est-ce que cela va numpy Option pour les données de type
string

?

Un ensemble de données que j'ai pour le moment - C'est l'histoire de messages entre mes amis et moi.

Toute l'histoire est dans le même fichier. csv. Chaque ligne a des colonnes 'day_of_the_week', 'date', 'time_of_message', 'author_of_message', 'message_body'

Le but d'analyser est un rapport sur notre discussion au cours de la dernière année.

Je veux être capable de calculer le nombre de messages envoyés les uns par les autres. Je veux pouvoir construire un histogramme de l'horloge pendant laquelle les messages ont été envoyés les uns aux autres.
Ensuite, je veux faire quelques mots comptant individuellement et dans le groupe.

Dans le 40ème, je sais comment faire. Par exemple:


df = read_csv/"messages.csv"/
number_of_messages_friend1 = len/df[df.author_of_message == 'friend1']


Comment puis-je filtrer le fichier csv sans pour autant Pandas?
Invité:

Daniel

Confirmation de:

Depuis que tu Pythonista il y a numpy, Vous voulez jeter un coup d'oeil à recarrays, qui sont approches numpy À ce type de problème. La prochaine chose a fonctionné pour moi hors de la boîte Pythonista:


import numpy as np
df=np.recfromcsv/'messages.csv'/
len/df[df.author_of_message==b'friend1']/


En fonction de votre format de données, vous constaterez peut-être que
recsfromcsv

"Travaille juste", Puisqu'il essaie de deviner les types de données, ou vous devrez peut-être configurer un peu les choses. Voir section
genfromtext

Pour un certain nombre d'options, telles que spécifier explicitement des types de données ou utiliser des convertisseurs pour convertir des dates de chaîne en objets datetime.
recsfromcsv

- C'est juste envelopper convienece autour de
genfromtext


https://docs.scipy.org/doc/num ... ml%23
#

Après recarray, Beaucoup d'opérations d'indexation simples fonctionnent également aussi bien que dans pandas. Remarque Vous devrez peut-être que la chaîne se compare à l'aide de la rangée B-Prefix /Objets d'octet/, Si vous convertissez en chaîne Unicode, comme indiqué ci-dessus.

Frederic

Confirmation de:

Utilisez le module
csv

De la bibliothèque standard pour lire des messages.
Vous pouvez l'enregistrer dans la liste.
collections.namedtuple

Pour un accès facile.


import csv

messages = []
with open/'messages.csv'/ as csvfile:
reader = csv.DictReader/csvfile, fieldnames=/'day_of_the_week', 'date', 'time_of_message', 'author_of_message', 'message_body'//
for row in reader:
messages.append/row/


Cela vous donne tous les messages sous la forme d'une liste de dictionnaires.

Alternativement, vous pouvez utiliser le lecteur habituel csv en combinaison avec
collections.namedtuple

, Pour faire une liste de tuples nommés, l'accès auquel est légèrement plus simple.


import csv
from collections import namedtuple

Msg = namedtuple/'Msg', /'day_of_the_week', 'date', 'time_of_message', 'author_of_message', 'message_body'//

messages = []
with open/'messages.csv'/ as csvfile:
msgreader = csv.reader/csvfile/
for row in msgreader:
messages.append/Msg/*row//

Gaetan

Confirmation de:

W. Pythonista Maintenant, il y a une concurrence sur iOS. application pyto Fournit python 3.8 de pandas.
https://apps.apple.com/us/app/pyto-python-3-8

Pour répondre aux questions, connectez-vous ou registre