Seite 1 von 1

Probleme beim Einlesen von CSV file mit Numpy

Verfasst: Freitag 19. Oktober 2018, 21:54
von pganster
Hallo Ihr,

ich möchte Daten aus Excel in Python importieren, um damit zu rechnen. Ich habe das Excel file bereits in ein CSV file umgewandelt.

Hier mein Code:

Code: Alles auswählen

# Import necessary packages
import numpy as np 

#Extract Data from Excel in Python Array
total_customer_data = np.array(np.genfromtxt('ML_Project_1_Linear_Regression_CostumerData.csv',  delimiter = ";", dtype=float))
print (total_customer_data)

#Calculating means from Customer Satisfaction and Loyalty
cs_data = np.array(total_customer_data[:,1])
print (cs_data)

cl_data = np.array(total_customer_data[:,2])
print (cl_data)

cs_mean = np.mean(cs_data)
cl_mean = np.mean(cl_data)

print (cs_mean)
print (cl_mean)
Ich habe schon vieles versucht (dtype auf "None" setzen, mit Panda die Daten einspeisen, was funktioniert aber dann Probleme bei der Berechnung des Means bereitet)

Nun weiß ich echt nicht mehr weiter.

Der Code liefert folgenden Output:

Code: Alles auswählen

[Running] python -u "/Users/anwender/Desktop/Machine Learning Projects/Bivariate_linear_Regression/Project_1_CustomerLoyaltyPrediction/Project_1_ML_Code.py"
[[nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]]
[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan]
[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan]
nan
nan

[Done] exited with code=0 in 0.719 seconds
Danke für Eure Hilfe im Voraus und viele Grüße!

Re: Probleme beim Einlesen von CSV file mit Numpy

Verfasst: Samstag 20. Oktober 2018, 08:17
von ThomasL
Nun, Numpy kann deine csv Datei nicht einlesen, wie sehen denn die ersten 5 Zeilen deiner csv Datei aus?
Normalerweise ist eine CSV Datei eine Comma-Separated-Values Datei, dein Delimiter ist aber ein Semikolon ";" warum?

Versuch doch mal die Bibliothek Pandas, da kannst du direkt Excel Dateien einlesen.
https://pandas.pydata.org/pandas-docs/s ... excel.html

Code: Alles auswählen

import pandas as pd
df = pd.read_excel('filename')
print(df.head())
und hiermit kannst du dann aus dem Dataframe ein Numpy-Array erzeugen
https://pandas.pydata.org/pandas-docs/s ... alues.html

Code: Alles auswählen

total_customer_data = df.values
Pandas bietet dir Möglichkeiten, deine Daten zu reinigen
https://pandas.pydata.org/pandas-docs/s ... _data.html
und kann auch mit df.mean() das machen, was du möchtest.

Imho eine Bibliothek die der angehende Data Scientist kennen sollte.

Re: Probleme beim Einlesen von CSV file mit Numpy

Verfasst: Samstag 20. Oktober 2018, 10:12
von Sirius3
@pganster: mit Pandas kann man auch direkt Excel-Dateien lesen. Bei csv hat man immer das Problem, das das Format nicht eindeutig ist. Bei Dir ist das Problem, dass Excel Zahlen mit Komma schreibt und nicht mit Punkt. Wo hast Du denn mit Pandas Probleme?

@ThomasL: der Delimiter ist ein »;« weil das der Standard von Excel ist, zumindest der deutschen Version.

Re: Probleme beim Einlesen von CSV file mit Numpy

Verfasst: Samstag 20. Oktober 2018, 10:56
von ThomasL
Sirius3 hat geschrieben: Samstag 20. Oktober 2018, 10:12 @ThomasL: der Delimiter ist ein »;« weil das der Standard von Excel ist, zumindest der deutschen Version.
Stimmt, habe ich in der Sekunde nicht auf dem Schirm gehabt.
Ist übrigens nicht nur in der deutschen Version so, sondern in allen Ländern in denen das Komma als Dezimaltrenner benutzt wird.
Ich vermute jetzt auch wie Du das dies die Ursache für die Numpy Einleseprobleme sein wird.

Re: Probleme beim Einlesen von CSV file mit Numpy

Verfasst: Samstag 20. Oktober 2018, 11:12
von snafu
Ich würde bei pd.read_csv() den Parameter decimal=',' setzen, sofern die deutsche Version in Excel genutzt wird.

Re: Probleme beim Einlesen von CSV file mit Numpy

Verfasst: Sonntag 4. November 2018, 10:27
von incoggnito
Bei mir sieht ein pandas csv import in der Regel irgendwie so aus:

Code: Alles auswählen

df = pd.read_csv(filepath, sep=';', header=6,engine='c', encoding='latin-1', thousands='.',decimal=',', usecols=[])
Bei mir funzt decimal ohne thousands meistens nicht... vielleicht hilft dir das weiter!

Wenn es sich um viele CSV Files handelt empfehle ich dir einen Blick auf Dask