|
|
|
|
Ich brauch mal etwas Python-Hilfe. Ich habe unter Windows (python(x,y)) ein kleines Skript geschrieben um Große Mengen Messwerte einzulesen und für jeden Kanal dann bestimmte Operationen durchzuführen.
Sieht in etwa so aus:
|
Code: |
import pandas as pd
df = pd.read_table(infile, skiprows=38, sep='\t\s*',header=0,names=nam)
# channels ist eine Liste der eingelesenen Kanäle
for channel in channels:
df[channel] = df[channel].apply(lambda x: -1 * x)
|
|
Oder ist das total doof, wie ich das hier mache? Die -1 ist natürlich exemplarisch, da werden kanalspezifische Werte berechnet.
Nun unter Linux mag er nicht mehr, mit folgender Fehlermeldung:
|
Code: |
File "convert.py", line 101, in prepareData
df[channel] = df[channel].apply(lambda x: x * (-1))
File "/usr/lib/python2.7/dist-packages/pandas/core/series.py", line 1998, in apply
mapped = lib.map_infer(values, f, convert=convert_dtype)
File "inference.pyx", line 1016, in pandas.lib.map_infer (pandas/lib.c:53184)
File "convert.py", line 101, in <lambda>
df[channel] = df[channel].apply(lambda x: x * (-1))
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int' |
|
|
|
|
|
|
|
|
Setz mal ein print(df[channel] davor, ich wette das ist ein I/O Problem.
Call me Zeilenende, maybe?
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 22.07.2014 21:25]
|
|
|
|
|
|
Zeilenende habe ich geprüft und sicherheitshalber ein dos2unix gemacht.
Ein print df hatte es auch nicht gebracht. Aber was ich gerade herausgefunden habe:
|
Code: |
a = numpy.min(df[channel])
df[channel] = df[channel].apply(lambda x: x - a)
|
|
Das funktioniert ohne Probleme ....
|
|
|
|
|
|
|
Mach mal ein print(repr(... ... w
|
|
|
|
|
|
|
|
Code: |
0 None
1 None
2 None
3 None
4 None
5 None
6 None
7 None
8 None
9 None
10 None
11 None
12 None
13 None
14 None
...
1130416 None
1130417 None
1130418 None
1130419 None
1130420 None
1130421 None
1130422 None
1130423 None
1130424 None
1130425 None
1130426 None
1130427 None
1130428 None
1130429 None
1130430 None
Name: CH1, Length: 1130431, dtype: object |
|
|
|
|
|
|
|
|
Das ist merkwürdig, weil...
|
Code: |
>>> numpy.min([1, None, 0])
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.4/site-packages/numpy/core/fromnumeric.py", line 2209, in amin
out=out, keepdims=keepdims)
File "/usr/lib/python3.4/site-packages/numpy/core/_methods.py", line 21, in _amin
out=out, keepdims=keepdims)
TypeError: unorderable types: int() <= NoneType()
|
|
|
|
|
|
|
|
|
Unter (k)ubuntu 14.4 (und bei 13.10 auch) wird meine vorherige Session nach suspend/resume nicht mehr aufgenommen sondern eine neue gestartet.
Per sudo pm-suspend funktionierts (ohne screen-lock), aber übers normale KDE-Menü "Ruhezustand" nicht.
Kennt das jemand? Bin etwas ratlos.
// wo finde ich denn überhaupt den Unterbau vom Klick auf "Ruhezustand" im Menü?
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von Rufus am 23.07.2014 3:35]
|
|
|
|
|
|
pm-hibernate oder pm-suspend-hybrid
|
|
|
|
|
|
|
Ich will ja nicht hibernaten, aber auch diese Kommandos nimmt KDE zum Anlass, ne komplett neue Sitzung aufzumachen.
Es ist auch komplett unmöglich, da irgendwas über naheliegende Suchbegriffe zu finden, weil bei noch mehr Leuten das System entweder gar nicht in suspend geht oder danach schwarze Screens zeigt. (Das Problem hab ich auf der Arbeit, auch mit kubuntu 14.4).
Ist einfach beachtlich, wie auch mein mittlerweile 16. Versionssprung unter *buntu das System zuverlässig beschissener macht als es kurz davor noch war. Gerade solche Energiesparscheiße geht ja nun wirklich jedes einzelne Mal kaputt. Ich wollte zuletzt einfach solange bei 13.4 bleiben wie es geht. Aber da haben sie letzte Woche die Repositories für abgeklemmt.
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von Rufus am 23.07.2014 3:36]
|
|
|
|
|
|
// hier was süßes für teK, wegen dem Doppelpost:
|
[Dieser Beitrag wurde 4 mal editiert; zum letzten Mal von Rufus am 23.07.2014 3:50]
|
|
|
|
|
|
Pah. Kümmer dich Mal lieber um den Nighttalk/"Nachtgespräch" Spam, der deutlich nach 12 Uhr nachts im pOT rumgeistert.
Außerdem haben Kadsen hier gar nichts verloren. Weiter seien dir die Releases mit dem Gütesiegel LTS empfohlen.
|
|
|
|
|
|
|
Ich dachte hier sind nur Pinguine und Gnus erlaubt.
|
|
|
|
|
|
|
Wenn man /._*/ in Sambas veto files schmeißt kann man unter Mac OS keine Dateien mehr speichern
|
|
|
|
|
|
|
e: Adobe hat auch nützliche Tipps zu diesem Thema:
|
(...)
15 1 * * * root find / -name ".DS_Store" -depth -exec rm {} \;
Note: This command is not run if your computer is switched off at the scheduled time.
| |
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von teK am 23.07.2014 13:08]
|
|
|
|
|
|
Das wiederum darf man auch einfach sperren. Mein veto sieht jetzt so aus:
veto files = /.~lock*/.DS_Store/.apdisk/.TemporaryItems/Thumbs.db/
Die ~2500 bestehenden ._ Dateien hab ich gestern einfach gelöscht, wenn der Mac jetzt meckert Arschlecken. Nur weil einer eine Extrawurst braucht, alle anderen arbeiten mit Windows/Android, nur die Herren Geschäftsführer mit Apple. Der Müll macht eh nur Stress, die iPhones haben auch immer wieder IMAP-Probleme bei denen es nur hilft das Postfach zu löschen und weil Apple meint die geilste Implementierung ever zu haben darf offenbar keine Third Party App das selbst machen.
/e: ok jetzt hat er die Farbpatronen im Drucker falsch eingesetzt und die Kalibrierung behebt das Problem nicht Und anstatt das Dokument erst einmal auszudrucken, wobei er sofort gesehen hätte dass neben der Farbe auch das Layout im Arsch ist, druckt er es gleich 100x. Also manchmal...
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von TheRealHawk am 23.07.2014 13:27]
|
|
|
|
|
|
Achwas, das nennt sich BYOD und du solltest endlich Mal mit der Zeit gehen.
Uns wurde auch schon gesagt, man bräuchte jetzt Exchange, damit diverse Herrschaften ihre E-Mails stets per iPhone abrufen können.
Und nein, ich brauche keine Hinweise auf jede der Ebenen, auf der die Forderung falsch ist. Ich muss mir echt schwer überlegen, ob ich wirklich in eine IT-Abteilung nach dem Studium zurückwechseln will.
|
|
|
|
|
|
|
Ich habe gehört, Schweinefarmer ist ein toller Beruf. Stressfreier als IT auf jeden Fall.
|
|
|
|
|
|
|
Ich bin ja SO froh, dass ich von solchen Problemen ganz ganz weit weg bin
|
|
|
|
|
|
|
Irgendwas mit Blumen wär schön. Landschaftsgärtner...
|
|
|
|
|
|
|
Oder Mathe Dozent für BWL-Studenten. Das ist sicher auch ganz nett.
------
http://writer2latex.sourceforge.net/ <- Das Ding ist erstaunlich. Ein tatsächlich nutzbarer ODT zu Latex Konverter. Ich habe hier gerade ein 160 Seiten Word Dokument das wirklich, wirklich passabel aussieht nach der Konvertierung zu Latex. Man muss nur noch nen paar Tabellen zurecht rücken und dann ist gut. Wirklich erstaunlich.
|
|
|
|
|
|
|
Ich liebe meinen Job.
Noch, aber das sage ich mir schon seit Jahren.
|
|
|
|
|
|
|
Das waren Refills. Originalkartusche eingesetzt: alles i.O. Refills wieder rein: verschoben.
|
|
|
|
|
|
|
Druckerpatronen nachfüllen ist Diebstahl.
|
|
|
|
|
|
|
Huh? 7 neue Posts? Achso, Berufswechsel war das Thema. Ich meinte eher damit, lieber in eine Firma zu wechseln, die mit dem Kram das Geld verdient und nicht "alles mit Strom" als Cost-Center sieht. Ggf. ist dort die Computerkompetenz/Kollege auch höher. Vielleicht.
|
|
|
|
|
|
|
| Zitat von audax
Druckerpatronen nachfüllen ist Diebstahl.
| |
You wouldn't refill your car...
|
|
|
|
|
|
|
Gerade Owncloud updaten wollen. Backup gemacht und die alte Version mit der Neuen überschrieben.
"Ach scheisse, die Config Files sind ja dann auch weg, das macht keinen Sinn. Lösch ich mal das neue noch mal."
Backup gelöscht. Flflflflaaarg.
|
|
|
|
|
|
|
Was ist mit dem Offsite Backup? *duck*
|
|
|
|
|
|
|
| Zitat von csde_rats
Das ist merkwürdig, weil...
| |
33°C im Büro .....
.... trotzdem den Fehler gefunden. Die Daten glätte ich etwas vor der Weiterverarbeitung, dabei haben sich (allerdings nur unter Linux?) NaNs eingeschlichen über die er dann stolpert.
Kaum habe ich einen Fehler gefunden, taucht der nächste auf. Da ich viele Dateien mit Millionen Zeilen bearbeiten muss und ich irgendwann auf die Daten zwecks nochmaliger Auswertung zugreifen möchte, schreibe ich einige wichtige Größen in eine sqlite-Db.
|
Code: |
db = sqlite3.connect('results')
cursor = db.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS max(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
date DATE,
CH1 FLOAT, CH2 FLOAT, CH3 FLOAT, CH4 FLOAT,
CH5 FLOAT, CH6 FLOAT, CH7 FLOAT, CH8 FLOAT
)
''')
db.commit()
for index, row in maxDf.iterrows():
cursor.execute('''SELECT id FROM max WHERE date=?''', (row['date'],))
res = cursor.fetchone()
if (res is None):
cursor.execute(''' INSERT INTO max(
date, CH1, CH2, CH3, CH4,
CH5, CH6, CH7, CH8 )
VALUES(?,?,?,?,?,?,?,?,?)''',
(row['date'], row['CH1'], row['CH2'], row['CH3'], row['CH4'],
row['CH5'], row['CH6'], row['CH7'], row['CH8']))
db.commit()
else:
print "Datensatz schon vorhanden: ", row['date']
|
|
Ich erstelle die Tabelle, falls es die noch nicht gibt. Schaue ob es den Eintrag gibt anhand des Datums des Ereignisses und wenn nicht schreibe ich meinen Datensatz.
Meine Tabelle maxDf
|
Code: |
**** maxDf ****
CH1 CH2 CH3 CH4 CH5 CH6 \
0 18.070684 43.264488 20.830862 39.697831 34.661297 31.780125
1 20.481906 44.095796 20.734493 47.565324 39.615918 28.991011
2 18.261824 40.048055 23.822858 41.425621 32.501876 29.643275
3 17.981061 40.066822 23.252253 41.192814 33.804376 30.237465
4 18.162716 42.295729 25.639662 42.665988 31.122789 34.134566
5 19.141138 45.534987 21.488452 45.435321 38.408519 30.754559
6 17.674254 41.468987 24.665070 40.986129 33.626094 32.720228
7 17.461358 40.841576 22.458733 39.312102 33.450855 30.670110
8 19.653870 43.239382 22.885799 45.754352 37.029432 34.055188
9 15.870130 42.939371 25.112170 41.512099 32.309900 30.703839
CH7 CH8 date
0 28.583219 25.244296 2014-06-05 08:18:48
1 29.468544 32.357577 2014-06-05 08:24:13.310000
2 29.015357 24.499214 2014-06-05 08:43:23.130000
3 29.541835 24.875813 2014-06-05 08:47:57.690000
4 23.729786 28.842401 2014-06-05 08:53:25.750000
5 26.051258 35.486517 2014-06-05 08:57:46.810000
6 27.319521 26.730911 2014-06-05 09:02:08.810000
7 29.331091 29.386884 2014-06-05 09:06:44.810000
8 27.754195 29.431518 2014-06-05 09:11:34.070000
9 24.589750 34.405666 2014-06-05 09:15:52.870000 |
|
und die Fehlermeldung
|
Code: |
Traceback (most recent call last):
File "convert.py", line 313, in writeDataBase
cursor.execute('''SELECT id FROM max WHERE date=?''', (row['date'],))
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.
|
|
Ich bin ratlos. Im übrigen ist mir aufgefallen, dass das Skript unter python(x,y) mit Windows 7 auf meinem i5 Notebook deutlich schneller durchläuft als auf meinem Dual-Xeon (5570): Linux 3min4, Windows 28s
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von YT am 23.07.2014 16:15]
|
|
|
|
|
|
| Zitat von audax
Was ist mit dem Offsite Backup? *duck*
| |
Das sind nur so Images von der ganzen Platte, und ich will jetzt nicht das ganze Ding neu einspielen
|
|
|
|
|
|
|
Dann mounte halt einfach nur das Image und kopier den Kram rüber
|
|
|
|
|
|
Thema: 100 gute Gründe für Linux ( v0.30 gute Gründe für systemd ) |