Seite 1 von 1
Zusammenführen von Listen und Export als csv
Verfasst: Sonntag 9. April 2017, 15:23
von uschmidt
Hallo Python Experten,
ich bin leider absoluter Anfänger was Python angeht und komme trotz Internetrecherche nicht weiter. Für ein Uniprojekt müssen verschiedene Werte in einer .csv-Datei berechnet werden. Mein Code sieht bisher wie folgt aus
Code: Alles auswählen
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
tweets=pd.read_csv('numTweets.csv', names=['Zeitstempel','Waehrung','AnzahlTweets'])
Sum=tweets.groupby('Waehrung').AnzahlTweets.sum()
Mean=tweets.groupby('Waehrung').AnzahlTweets.mean()
Std=tweets.groupby('Waehrung').AnzahlTweets.std()
Min=tweets.groupby('Waehrung').AnzahlTweets.min()
Max=tweets.groupby('Waehrung').AnzahlTweets.max()
stattweets=[Sum,Mean,Std,Min,Max]
Lasse ich mir nun stattweets anzeigen, bekomme ich mehrere Listen hintereinander. Ich würde diese dieses Listen jedoch gerne über die Variable 'Waehrung' zusammenführen sodass ich am Ende eine Liste bekomme, in der mir in einer Zeile für jede Währung Sum, Mean, Std, Min und Max angezeigt werden. Wenn möglich, sollte diese direkt in eine neue .csv-Datei überführt werden. Ist dies überhaupt möglich und wenn ja, wie? :K
Danke schon mal im Voraus!
Re: Zusammenführen von Listen und Export als csv
Verfasst: Sonntag 9. April 2017, 18:25
von noisefloor
Hallo,
pandas kennt eine Methode `describe()`, die dir direkt eine ganze Reihe von Statistiken für einen DataFrame ausgibt.
Ansonsten wäre es IMHO hilfreich, wenn du ein paar Beispielzeilen aus der CSV Datei zeigen könntest, damit man sieht, wie die Ausgangsdaten aussehen. Wenn du realen Daten hier nicht zeigen kannst, dann erfinde halt ein paar Daten. Wichtig ist nur, dass die Struktur gleich ist.
Gruß, noisefloor
Re: Zusammenführen von Listen und Export als csv
Verfasst: Sonntag 9. April 2017, 21:11
von uschmidt
Die Ursprungsdaten sehen wie folgt aus:
- Zeitstempel Waehrung AnzahlTweets
0 2017-02-11 20:21:10.944022 ADCN 0
1 2017-02-11 20:22:11.546657 ADZ 0
2 2017-02-11 20:23:12.188070 AEON Coin 0
3 2017-02-11 20:24:12.705810 AGRS 0
4 2017-02-11 20:25:13.243329 AMBER 0
Pro Waehrung gibt es mehrere Zeitstempel, also mehrere Zeilen. Mein Ziel ist es, eine .csv-Datei zu erstellen, die nach Waehrung gruppiert ist und bei der ich pro Waehrung jeweils Mittelwert, Minimum, Maximum, Summe und die Standardabweichung der Tweets habe.
Danke schon mal!
Re: Zusammenführen von Listen und Export als csv
Verfasst: Montag 10. April 2017, 13:08
von Natrix natrix
Hallo uschmid,
so ganz verstanden habe ich Deine Anforderungen noch nicht...
Zusammenführen von Dateien klappt in der Tat mit Pandas recht einfach, die DataFrames sind wie Tabellen mit verschiedenen Datentypen und eignen sich gut für die Analyse von Daten.
Describe gibt wie schon geschrieben die die wichtigsten Informationen in einer Datenkarte kurz aus.
df.describe()
Du kannst auch über einzelnen Spalten gruppieren
df.groupby("Spalte xy").describe()
Pandas kann auch csvs lesen und schreiben:
lesen: df = pd.read_csv
schreiben: df.to_csv
Doku hier auf Deutsch:
http://www.python-kurs.eu/pandas.php
VG
Re: Zusammenführen von Listen und Export als csv
Verfasst: Montag 10. April 2017, 14:57
von uschmidt
Hallo Natrix,
in meinen Ursprungsdaten gibt es für jede Waehrung mehrere Zeitstempel, also mehrere Zeilen:
- Zeitstempel Waehrung AnzahlTweets
0 2017-02-11 20:21:10.944022 ADCN 0
1 2017-02-11 20:22:11.546657 ADZ 0
2 2017-02-11 20:23:12.188070 AEON Coin 0
3 2017-02-11 20:24:12.705810 AGRS 0
4 2017-02-11 20:25:13.243329 AMBER 0
Ich möchte allerdings für jeden Waehrung nur noch eine Zeile(die Liste also nach Waehrung gruppiert). Außerdem möchte ich für jeden Waehrung die Summe, den Mittelwert, die Standardabweichung, das Minimum und das Maximum aus der Spalte 'AnzahlTweets' berechnen.
Zum Schluss sollte meine Liste so aussehen:
Waehrung Summe Mittelwert Std Min Max
ADCN 5 0,03 0,2 0 2
ADZ 17 0,10 0,38 0 2
...
Mein Problem ist nicht, die Daten in eine .csv-Datei zu schreiben, sondern vor allem die Tabelle so zu bauen, dass jede Berechnung in einer Spalte ist.
Re: Zusammenführen von Listen und Export als csv
Verfasst: Dienstag 11. April 2017, 18:55
von noisefloor
Hallo,
sagen wir mal, das sind deine Ausgangsdaten:
Code: Alles auswählen
2017-02-11 20:21:10.944022;ADCN;2
2017-02-11 20:22:11.546657;ADZ;5
2017-02-10 20:22:11.546657;ADZ;10
2017-02-11 20:23:12.188070;AEON;4
2017-02-12 20:21:10.944022;ADCN;4
Dann würde ich das so machen:
[codebox=pycon file=Unbenannt.txt]>>> import pandas as pd
>>> df=pd.read_csv('text.csv', names=['timestamp','currency','tweet_count'], sep=';')
>>> for item in df.currency.unique():
... mask = df['currency'].map(lambda x: x==item)
... sum_value = df[mask].tweet_count.sum()
... mean_value = df[mask].tweet_count.mean()
... std_value = df[mask].tweet_count.std()
... print(item, sum_value, mean_value, std_value)
...
ADCN 6 3.0 1.41421356237
ADZ 15 7.5 3.53553390593
AEON 4 4.0 nan[/code]
Um das ganze in eine CSV-Datei zu schreiben musst du dann "nur" noch das csv-Modul aus der Standardbiblithek importieren, dir eine CSV-Datei zum Schreiben anlegen und dann da, wo das `print(...)` steht, die Daten als Zeile in die CSV-Datei schreiben.
Gruß, noisefloor
Re: Zusammenführen von Listen und Export als csv
Verfasst: Dienstag 11. April 2017, 22:17
von uschmidt
Hat funktioniert!
BESTEN DANK!!!