#csvkit
▻https://csvkit.readthedocs.org
Convert Excel to CSV:
in2csv data.xls > data.csv
Convert JSON to CSV:
in2csv data.json > data.csv
Print column names:
csvcut -n data.csv
Select a subset of columns:
csvcut -c column_a,column_c data.csv > new.csv
Reorder columns:
csvcut -c column_c,column_a data.csv > new.csv
Find rows with matching ells:
csvgrep -c phone_number -r 555-555-\d{4}" data.csv > matching.csv
Convert to JSON:
csvjson data.csv > data.json
Generate summary statistics:
csvstat data.csv
Query with SQL:
csvsql --query "select name from data where age > 30" data.csv > old_folks.csv
Import into PostgreSQL:
csvsql --db postgresql:///database --insert data.csv
Extract data from PostgreSQL::
sql2csv --db postgresql:///database --query "select * from data" > extract.csv
pour la plupart de ces trucs j’utilise #q mais @lazuly préfère #csvkit alors…
Le lien vers la doc de la dernière version (le site de doc a l’air un peu cassé) :
▻http://csvkit.readthedocs.io/en/540
Lien vers le dépot sur github :
▻https://github.com/wireservice/csvkit
pour q, voir : ►https://seenthis.net/messages/219474
J’ai l’impression que ►http://seenthis.net/fran%C3%A7ais/article/le-minimum-%C3%A0-savoir n’est pas trop maintenue à jour. Il me semblait qu’on pouvait désormais mettre du gras et du pré-formaté (pour le code informatique) dans SeenThis mais je ne le retrouve pas dans cette page.
Et il n’y a pas d’option « voir le source » pour savoir comment l’auteur de ►http://seenthis.net/messages/219474 a fait.
Pour sortir tous les textes d’un site #SPIP dans un grand fichier #TSV (un article par ligne) :
echo "SELECT a.id_article,a.titre, a.chapo,a.texte,a.lang, GROUP_CONCAT(DISTINCT u.nom SEPARATOR ', ') AS auteurs, GROUP_CONCAT(DISTINCT m.titre SEPARATOR ', ') AS mots, SUBSTRING(a.date,1,7) AS date FROM spip_articles a LEFT JOIN spip_auteurs_articles au ON a.id_article=au.id_article LEFT JOIN spip_auteurs u ON au.id_auteur=u.id_auteur LEFT JOIN spip_mots_articles am ON a.id_article=am.id_article LEFT JOIN spip_mots m ON am.id_mot=m.id_mot WHERE a.statut IN ('publie') GROUP BY a.id_article;" | mysql $BASE -B > $BASE.tsv
(ici avec un test sur le statut ’publié’) ; ensuite, on peut regarder le nombre d’articles écrits par Untel (ou parlant de « truc »), avec le nombre de mots et de signes correspondants :
zgrep -E 'Untel' $BASE.tsv.gz | wc
1294 1335040 8908699
ici 1294 articles, 1,3 millions de mots, 8,9 millions de caractères
Et si on veut, on peut retraiter ça avec awk
, voire en SQL avec #q :
►http://seenthis.net/messages/219474
Après, on va nettoyer tout ça et faire du #text-mining, avec #gensim
7 command-line tools for data science | Jeroen Janssens
▻http://jeroenjanssens.com/2013/09/19/seven-command-line-tools-for-data-science.html
1. #jq - sed for JSON
▻https://stedolan.github.io/jq
2. #json2csv - convert JSON to CSV
3. #csvkit - suite of utilities for converting to and working with CSV
4. #scrape - HTML extraction using XPath or CSS selectors
5. #xml2json - convert XML to #JSON
6. #sample - when you’re in debug mode
(PS : je recommande de renommer sample en #samply, car sample existe déjà)
@archiloque vient de repérer gron
, une alternative à jq
pour manipuler du #JSON
▻https://github.com/tomnomnom/gron
@Fil @Archiloque J’ai testé gron, l’idée de base (formater le JSON d’une manière qui permettte à un grep normal de fonctionner) est bonne, mais il a moins de possibilité que jq.
Sur jq, mon article d’introduction : ▻http://www.bortzmeyer.org/jq.html #jq #JSON