Messdaten (100.000+) auswerten, Diagramme erzeugen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Mogician
User
Beiträge: 21
Registriert: Samstag 3. November 2018, 21:40

Sonntag 4. November 2018, 19:10

Ja, richtig, dieses Symbol für den Durchschnitt hat das verursacht. Und stimmt, die Zeile kann ich ganz löschen.

Jetzt kommt aber das hier.

Code: Alles auswählen

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-13-ee95a1149030> in <module>
      3 
      4 df = pd.read_csv("daten.csv")
----> 5 df[["TI101"]].plot(figsize=(40,10))

~\Anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
   2680         if isinstance(key, (Series, np.ndarray, Index, list)):
   2681             # either boolean or fancy integer index
-> 2682             return self._getitem_array(key)
   2683         elif isinstance(key, DataFrame):
   2684             return self._getitem_frame(key)

~\Anaconda3\lib\site-packages\pandas\core\frame.py in _getitem_array(self, key)
   2724             return self._take(indexer, axis=0)
   2725         else:
-> 2726             indexer = self.loc._convert_to_indexer(key, axis=1)
   2727             return self._take(indexer, axis=1)
   2728 

~\Anaconda3\lib\site-packages\pandas\core\indexing.py in _convert_to_indexer(self, obj, axis, is_setter)
   1325                 if mask.any():
   1326                     raise KeyError('{mask} not in index'
-> 1327                                    .format(mask=objarr[mask]))
   1328 
   1329                 return com._values_from_object(indexer)

KeyError: "['TI101'] not in index"
Mit "Value" das gleiche. Da hab ich wohl irgendwie den Zusammenhang nicht geschnallt.
Benutzeravatar
ThomasL
User
Beiträge: 419
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Sonntag 4. November 2018, 19:30

Er findet keine Spalte mit Namen 'TI101'
Du kannst mit df.head() dir die ersten 5 Zeilen anzeigen lassen, da werden auch die Spaltennamen aufgeführt, kopier das mal hier rein
Falls du die Möglichkeit hast, mir eine Sample csv Datei (zB nur 50 Zeilen oder so) zur Verfügung zu stellen, kann ich dir ein Notebook mit Beispielschritten basteln, wie ich vorgehen würde.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
Mogician
User
Beiträge: 21
Registriert: Samstag 3. November 2018, 21:40

Sonntag 4. November 2018, 19:32

Ich werde das dann mal jetzt probieren.

edit: Bild



Natürlich gerne. Soll ich das irgendwo hochladen und dir den Link schicken oder geht das auch irgendwo hier, oder direkt?
Sirius3
User
Beiträge: 8805
Registriert: Sonntag 21. Oktober 2012, 17:20

Sonntag 4. November 2018, 19:47

Wenn Du Tabs als Trennzeichen hast, solltest Du die beim Lesen auch angeben:

Code: Alles auswählen

df = pd.read_csv("daten.csv", delimiter="\t")
Mogician
User
Beiträge: 21
Registriert: Samstag 3. November 2018, 21:40

Sonntag 4. November 2018, 19:52

Danke, aber ich bekomme im Ergebnis erstmal den gleichen Error.

Code: Alles auswählen

import pandas as pd
import matplotlib.pyplot as plt
​
df = pd.read_csv("daten.csv", delimiter="\t")
df[["ti101"]].plot(figsize=(40,10))
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-17-8e7b8287bf5a> in <module>
      3 
      4 df = pd.read_csv("daten.csv", delimiter="\t")
----> 5 df[["ti101"]].plot(figsize=(40,10))

~\Anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
   2680         if isinstance(key, (Series, np.ndarray, Index, list)):
   2681             # either boolean or fancy integer index
-> 2682             return self._getitem_array(key)
   2683         elif isinstance(key, DataFrame):
   2684             return self._getitem_frame(key)

~\Anaconda3\lib\site-packages\pandas\core\frame.py in _getitem_array(self, key)
   2724             return self._take(indexer, axis=0)
   2725         else:
-> 2726             indexer = self.loc._convert_to_indexer(key, axis=1)
   2727             return self._take(indexer, axis=1)
   2728 

~\Anaconda3\lib\site-packages\pandas\core\indexing.py in _convert_to_indexer(self, obj, axis, is_setter)
   1325                 if mask.any():
   1326                     raise KeyError('{mask} not in index'
-> 1327                                    .format(mask=objarr[mask]))
   1328 
   1329                 return com._values_from_object(indexer)

KeyError: "['ti101'] not in index"
Benutzeravatar
ThomasL
User
Beiträge: 419
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Sonntag 4. November 2018, 19:59

Schick mir einen Link bei einem Hoster deiner Wahl per PN.
Schreiben sich die Spalten mit kleinem ti101 oder grossem TI101, das ist Case Sensitiv.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
Mogician
User
Beiträge: 21
Registriert: Samstag 3. November 2018, 21:40

Sonntag 4. November 2018, 20:18

Oh okay, dann gibt es mit dem neuen code schon einen Unterschied.

Code: Alles auswählen

import pandas as pd
import matplotlib.pyplot as plt
​
df = pd.read_csv("daten.csv", delimiter="\t")
df[["TI101"]].plot(figsize=(40,10))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-18-9a464363557d> in <module>
      3 
      4 df = pd.read_csv("daten.csv", delimiter="\t")
----> 5 df[["TI101"]].plot(figsize=(40,10))

~\Anaconda3\lib\site-packages\pandas\plotting\_core.py in __call__(self, x, y, kind, ax, subplots, sharex, sharey, layout, figsize, use_index, title, grid, legend, style, logx, logy, loglog, xticks, yticks, xlim, ylim, rot, fontsize, colormap, table, yerr, xerr, secondary_y, sort_columns, **kwds)
   2939                           fontsize=fontsize, colormap=colormap, table=table,
   2940                           yerr=yerr, xerr=xerr, secondary_y=secondary_y,
-> 2941                           sort_columns=sort_columns, **kwds)
   2942     __call__.__doc__ = plot_frame.__doc__
   2943 

~\Anaconda3\lib\site-packages\pandas\plotting\_core.py in plot_frame(data, x, y, kind, ax, subplots, sharex, sharey, layout, figsize, use_index, title, grid, legend, style, logx, logy, loglog, xticks, yticks, xlim, ylim, rot, fontsize, colormap, table, yerr, xerr, secondary_y, sort_columns, **kwds)
   1975                  yerr=yerr, xerr=xerr,
   1976                  secondary_y=secondary_y, sort_columns=sort_columns,
-> 1977                  **kwds)
   1978 
   1979 

~\Anaconda3\lib\site-packages\pandas\plotting\_core.py in _plot(data, x, y, subplots, ax, kind, **kwds)
   1802         plot_obj = klass(data, subplots=subplots, ax=ax, kind=kind, **kwds)
   1803 
-> 1804     plot_obj.generate()
   1805     plot_obj.draw()
   1806     return plot_obj.result

~\Anaconda3\lib\site-packages\pandas\plotting\_core.py in generate(self)
    256     def generate(self):
    257         self._args_adjust()
--> 258         self._compute_plot_data()
    259         self._setup_subplots()
    260         self._make_plot()

~\Anaconda3\lib\site-packages\pandas\plotting\_core.py in _compute_plot_data(self)
    371         if is_empty:
    372             raise TypeError('Empty {0!r}: no numeric data to '
--> 373                             'plot'.format(numeric_data.__class__.__name__))
    374 
    375         self.data = numeric_data

TypeError: Empty 'DataFrame': no numeric data to plot
Neuer Error.
Benutzeravatar
pixewakb
User
Beiträge: 1137
Registriert: Sonntag 24. April 2011, 19:43

Sonntag 4. November 2018, 20:21

Da stimmt etwas mit deinen Daten nicht: In Excel werden schon einige Zahlen nicht als Zahlen erkannt und deshalb linksbündig ausgerichtet. Ferner ist mir nicht klar, was Komma ist, weil sonst Zahlen für Temperaturen zu groß wären... Möglicherweise musst du noch mal auf die Ursprungsdaten zurückgehen.
Mogician
User
Beiträge: 21
Registriert: Samstag 3. November 2018, 21:40

Sonntag 4. November 2018, 20:39

pixewakb hat geschrieben:
Sonntag 4. November 2018, 20:21
Da stimmt etwas mit deinen Daten nicht: In Excel werden schon einige Zahlen nicht als Zahlen erkannt und deshalb linksbündig ausgerichtet. Ferner ist mir nicht klar, was Komma ist, weil sonst Zahlen für Temperaturen zu groß wären... Möglicherweise musst du noch mal auf die Ursprungsdaten zurückgehen.
Stimmt, das ist merkwürdig. Bei der Auswertung mit Excel ging das noch, ich schaue es mir gerade an.
Benutzeravatar
ThomasL
User
Beiträge: 419
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Sonntag 4. November 2018, 20:42

Dateien sind angekommen, schau sie mir gerade an. Gib mir ein wenig Zeit und ich sende dir ein Notebook zurück.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
Benutzeravatar
ThomasL
User
Beiträge: 419
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Sonntag 4. November 2018, 20:50

Wie sind denn die Zahlenwerte der Spalten TIxxx zu interpretieren?

Code: Alles auswählen

	Date	Time	TI101	TI102	TI103	TI104	TI105	TI106	TI107	TI108	...	TI148	TI149	TI150	TI151	TI152	TI153	TI154	TI155	TI156	TI157
0	02.11.2018	12:28:57	83.829.002	83.908.996	80.165.001	80.096.001	84.275.002	84.022.003	88.922.996	88.781.998	...	1372	1372	1372	1372	1372	1372	1372	1372	1372	1372
1	02.11.2018	12:28:58	83.626.999	83.765.999	79.987	79.905.998	84.067.001	83.832.001	88.745.003	88.616.997	...	1372	1372	1372	1372	1372	1372	1372	1372	1372	1372
2	02.11.2018	12:29:01	83.115.997	83.244.003	79.392.998	79.300.003	83.443.001	83.252.998	88.156.998	88.037.002	...	1372	1372	1372	1372	1372	1372	1372	1372	1372	1372
3	02.11.2018	12:29:03	82.938.004	82.899.002	78.988.998	78.931.999	83.083	82.825.996	87.758.003	87.653	...	1372	1372	1372	1372	1372	1372	1372	1372	1372	1372
4	02.11.2018	12:29:05	82.628.998	82.566.002	78.621.002	78.528	82.655.998	82.418.999	87.412.002	87.282.997	...	1372	1372	1372	1372	1372	1372	1372	1372	1372	1372
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
Mogician
User
Beiträge: 21
Registriert: Samstag 3. November 2018, 21:40

Sonntag 4. November 2018, 20:59

Hab die Urdatei nochmal mit notepad bearbeitet und dann nochmal ausprobiert mit dem Ergebnis.

Code: Alles auswählen

import pandas as pd
import matplotlib.pyplot as plt
​
df = pd.read_csv("Kopie_Daten.csv", delimiter="\t")
df[["TI101"]].plot(figsize=(40,10))
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-25-7047e00903df> in <module>
      3 
      4 df = pd.read_csv("Kopie_Daten.csv", delimiter="\t")
----> 5 df[["TI101"]].plot(figsize=(40,10))

~\Anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
   2680         if isinstance(key, (Series, np.ndarray, Index, list)):
   2681             # either boolean or fancy integer index
-> 2682             return self._getitem_array(key)
   2683         elif isinstance(key, DataFrame):
   2684             return self._getitem_frame(key)

~\Anaconda3\lib\site-packages\pandas\core\frame.py in _getitem_array(self, key)
   2724             return self._take(indexer, axis=0)
   2725         else:
-> 2726             indexer = self.loc._convert_to_indexer(key, axis=1)
   2727             return self._take(indexer, axis=1)
   2728 

~\Anaconda3\lib\site-packages\pandas\core\indexing.py in _convert_to_indexer(self, obj, axis, is_setter)
   1325                 if mask.any():
   1326                     raise KeyError('{mask} not in index'
-> 1327                                    .format(mask=objarr[mask]))
   1328 
   1329                 return com._values_from_object(indexer)

KeyError: "['TI101'] not in index"

df.head()
​
Date;Time;TI101;TI102;TI103;TI104;TI105;TI106;TI107;TI108;TI109;TI110;TI111;TI112;TI113;TI114;TI115;TI116;TI117;TI118;TI119;TI120;TI121;TI122;TI123;TI124;TI125;TI126;TI127;TI128;TI129;TI130;TI131;TI132;TI133;TI134;TI135;TI136;TI137;TI138;TI139;TI140;TI141;TI142;TI143;TI144;TI145;TI146;TI147
0	02.11.2018;11:45:18;50,20;36,12;45,20;45,78;40...
1	02.11.2018;11:45:20;50,76;37,00;46,39;46,96;41...
2	02.11.2018;11:45:22;51,95;37,95;47,54;48,02;42...
3	02.11.2018;11:45:24;53,02;38,89;48,59;49,15;43...
4	
Also wieder der alte Error


Bild
Mogician
User
Beiträge: 21
Registriert: Samstag 3. November 2018, 21:40

Sonntag 4. November 2018, 21:01

ThomasL hat geschrieben:
Sonntag 4. November 2018, 20:50
Wie sind denn die Zahlenwerte der Spalten TIxxx zu interpretieren?

Code: Alles auswählen

	Date	Time	TI101	TI102	TI103	TI104	TI105	TI106	TI107	TI108	...	TI148	TI149	TI150	TI151	TI152	TI153	TI154	TI155	TI156	TI157
0	02.11.2018	12:28:57	83.829.002	83.908.996	80.165.001	80.096.001	84.275.002	84.022.003	88.922.996	88.781.998	...	1372	1372	1372	1372	1372	1372	1372	1372	1372	1372
1	02.11.2018	12:28:58	83.626.999	83.765.999	79.987	79.905.998	84.067.001	83.832.001	88.745.003	88.616.997	...	1372	1372	1372	1372	1372	1372	1372	1372	1372	1372
2	02.11.2018	12:29:01	83.115.997	83.244.003	79.392.998	79.300.003	83.443.001	83.252.998	88.156.998	88.037.002	...	1372	1372	1372	1372	1372	1372	1372	1372	1372	1372
3	02.11.2018	12:29:03	82.938.004	82.899.002	78.988.998	78.931.999	83.083	82.825.996	87.758.003	87.653	...	1372	1372	1372	1372	1372	1372	1372	1372	1372	1372
4	02.11.2018	12:29:05	82.628.998	82.566.002	78.621.002	78.528	82.655.998	82.418.999	87.412.002	87.282.997	...	1372	1372	1372	1372	1372	1372	1372	1372	1372	1372
Sorry, da hat Excel was zerhackt. Es sind im Prinzip Temperaturen, also 83,83 würde voll reichen. Ich weiß nicht, warum Excel da zwei Punkte reingehauen hat.
An dem Computer, wo die Daten herkommen, ist wohl nach amerikanischer norm eingestellt udn deshalb Punkt statt Komma.
Ich habe das jetzt mal mit notepad geöffnet, ersetzt und dann mit Excel geöffnet und zur csv gemacht.
Ich schicke dir nochmal Daten okay?
Sirius3
User
Beiträge: 8805
Registriert: Sonntag 21. Oktober 2012, 17:20

Sonntag 4. November 2018, 21:06

Was sollen denn diese doppelten eckigen Klammern?
Was passiert bei:

Code: Alles auswählen

df["TI101"].plot(figsize=(40,10))
?
Benutzeravatar
pixewakb
User
Beiträge: 1137
Registriert: Sonntag 24. April 2011, 19:43

Sonntag 4. November 2018, 21:09

Sirius3 hat geschrieben:
Sonntag 4. November 2018, 21:06
Was sollen denn diese doppelten eckigen Klammern?
Was passiert bei:

Code: Alles auswählen

df["TI101"].plot(figsize=(40,10))
?
@Sirius3: <s>Danke für den Hinweis, wahrscheinlich ein Fragment, was ich von irgendwo mitschleppe.</s> Ich plotte meist mehrere Spalten in einem Durchgang und dann brauche ich die doppelten eckigen Klammern. Das ist der Grund dafür. Im obigen Beispiel kommst du ohne aus; wenn der Threadstarter mal mehrere Spalten plotten will, braucht er das wieder.

@Mogician: Pandas braucht wahrscheinlich amerikanisches Format, Rest käme auf einen Test an, ob ein Komma auch erkannt würde.
Antworten