2017-05-16 1 views
0

Eh bien, je comprends bien que gnuplot n'est pas un système de traitement de données mais un logiciel de traçage. Mais de toute façon ...Somme des colonnes sélectionnées filtrées par regex dans gnuplot

En python-pandas, je peux sélectionner plusieurs colonnes en passant un regex to dataframe par exemple. df.filter(regex = '\.x$') retournera les colonnes nommées 'sw0.x', 'sw1.x', etc. Ensuite, je peux les résumer et les tracer.

Récemment, je suis passé à pgfplots (latex) et j'utilise gnuplot intensivement avec pgfplots sur un grand ensemble de données. Plusieurs fois, j'ai besoin de tracer la somme de plusieurs colonnes qui correspond à une expression régulière donnée. Je veux faire quelque chose comme plot 'data.csv' SUM("\.x$") every 100 with line où fonction/macro/quel que soit SUM accepte l'expression régulière et me renvoie la somme des colonnes appropriées.

Répondre

1

Dans ce cas, il sera très probablement nécessaire de "sous-traiter" cette partie de traitement aux Pandas. Par exemple, si vous créez un script filter.py comme:

#!/usr/bin/env python 
import pandas as pd 
import sys 

df = pd.read_csv(sys.argv[1], sep = ',', header = 0) 
s = df.filter(regex='\.x$', axis = 1).sum(axis = 1) 
s.to_csv(sys.stdout, sep = '\t') 

alors vous pouvez "réutiliser" dans Gnuplot comme:

plot "<python filter.py data.csv" w lp