Seite 1 von 1

Pandas read xlsx

Verfasst: Montag 18. Juli 2016, 15:40
von Lienz20013
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...

Re: Pandas read xlsx

Verfasst: Montag 18. Juli 2016, 20:11
von Sirius3
@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.

Re: Pandas read xlsx

Verfasst: Montag 18. Juli 2016, 21:15
von pixewakb
openpyxl ist großartig! Auch, wenn da noch mehr Daten folgen, würde ich das wählen.

Re: Pandas read xlsx

Verfasst: Dienstag 19. Juli 2016, 14:17
von Lienz20013
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?

Re: Pandas read xlsx

Verfasst: Dienstag 19. Juli 2016, 14:51
von Lienz20013
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.

Re: Pandas read xlsx

Verfasst: Dienstag 19. Juli 2016, 15:07
von Sirius3
@Lienz20013: Du willst doch hoffentlich das Datum als Excel-Datum speichern.

Re: Pandas read xlsx

Verfasst: Dienstag 19. Juli 2016, 15:10
von Lienz20013
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...