Pandas read xlsx

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.
Antworten
Lienz20013
User
Beiträge: 88
Registriert: Freitag 26. September 2014, 14:42

Hi,

kann mir jemand helfen ich versuche ein xlsx-sheet einzulesen. und zwar hat dieses folgende Form:

Code: Alles auswählen

	Trace	0
	Date	26. Feb. 16
	Time	14:03:16
Points	distance	temperature
	          m	               °C
0	        0,00	              17,52
1	        0,50	              17,44
Dieses Sheet würde ich mir dann gerne als csv Datei ausgeben lassen und sollte dann folgendermaßen aussehen:

Code: Alles auswählen

;;;Points;;0;1
Trace;Date;Time;distance;m;0,00;0,50
0;2016-02-16;14:03:16;temperature;°C;17,52;17,44
Bis jetz hab ich erstmal das gemacht:

Code: Alles auswählen

import pandas as pd

df = pd.ExcelFile("Moxa_raman_8_05_1520160226140316.xlsx")



d = df.parse('temperature',header=3,index_col = 0)


temp = d['temperature']

dis = d['distance']

aa  = temp.values
bb = dis.values
Ich weiß nicht wie ich das mit der Zeit und dem Datum machen soll...
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@Lienz20013: Pandas ist ja dazu da, große Mengen an gleichförmigen Daten zu lesen; Du hast aber eine Excel-Datei mit wenigen ganz unterschiedlichen Zellen. Dazu würde ich die Datei mit xlrd oder openpyxl öffnen und direkt auf die Zellen zugreifen.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

openpyxl ist großartig! Auch, wenn da noch mehr Daten folgen, würde ich das wählen.
Lienz20013
User
Beiträge: 88
Registriert: Freitag 26. September 2014, 14:42

Ok, sehr gut. Jetzt hab ich alles eingeladen. Jetzt möchte ich es noch richtig in einer csv Datei ausgeben.
Also sieht jetzt folgender maßen aus:

Code: Alles auswählen

from openpyxl import load_workbook
import numpy as np

wb = load_workbook(filename = 'Moxa_raman_8_05_1520160226140316.xlsx')

ws = wb.active

ws = wb['temperature']

trace_num = ws['C1'].value
text_trace = str(ws['B1'].value)

date =  ws['C2'].value
text_date = str(ws['B2'].value)

time =  ws['C3'].value
text_time = str(ws['B3'].value)


unit_distance = str(ws['B5'].value)
unit_temperature = ws['C5'].value

text_Points = str(ws['A4'].value)
text_dis = str(ws['B4'].value)
text_temp = str(ws['C4'].value)


points = np.array([[cell.value for cell in col] for col in ws['A6':'A278']])
distance = np.array([[cell.value for cell in col] for col in ws['B6':'B278']])
temperature = np.array([[cell.value for cell in col] for col in ws['C6':'C278']])
Hat jemand da noch eine Idee?
Zuletzt geändert von Anonymous am Dienstag 19. Juli 2016, 14:24, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Lienz20013
User
Beiträge: 88
Registriert: Freitag 26. September 2014, 14:42

Also jetzt hab ichs noch mal geändert. Und zwar will ich es ja die Daten nur transponieren und das Datum in einem anderen Format ausgeben.
Also sieht jetzt folgender maßen aus:

Code: Alles auswählen

from openpyxl import load_workbook
import numpy as np

wb = load_workbook(filename = 'Moxa_raman_8_05_1520160226140316.xlsx')

ws = wb.active

ws = wb['temperature']

A = np.array([[cell.value for cell in col] for col in ws['A1':'A278']]).T
B = np.array([[cell.value for cell in col] for col in ws['B1':'B278']]).T
C = np.array([[cell.value for cell in col] for col in ws['C1':'C278']]).T

alles = np.vstack([A,B,C])

np.savetxt("foo.csv", alles, delimiter=";",fmt='%.18ef')

Also jetzt noch in ein csv Format und dann das Datum umschreiben also (26. Feb. 16 --> 2016-02-16). Jemand eine Idee? Beim schreiben in csv File habe ich Probleme mit dem Datatype.
Zuletzt geändert von Lienz20013 am Dienstag 19. Juli 2016, 15:07, insgesamt 1-mal geändert.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@Lienz20013: Du willst doch hoffentlich das Datum als Excel-Datum speichern.
Lienz20013
User
Beiträge: 88
Registriert: Freitag 26. September 2014, 14:42

Also weiß nicht genau. Eigentlich nicht das schränkt mich wieder ein oder. Ich will es in eine csv Datei schreiben und von Excel format weg kommen.
Ist das Excel-Datum: datetime.datetime(2016, 2, 26, 14, 3, 16)

Also Daten Einlesen transponieren und Datum umschreiben...
Antworten