Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Peter Otten <__peter__@web.de> Newsgroups: de.comp.lang.python Subject: Re: [Python-de] Anfaengerfrage: Dataframe - Zeilenmittel - Spaltenmittel Date: Wed, 19 Jun 2019 22:35:31 +0200 Organization: None Lines: 120 Message-ID: References: <1825444.o0KX4FVeTt@host> <9390763f-1e2a-fb62-50ed-6b776764aec9@goebel-consult.de> <8217725.EGQyf2vfZd@host> <2233175.VqSBi401Pp@palindrom> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Trace: news.uni-berlin.de WD9AAic9A4UnBGQzWR+zTQw/Sx1AovuFPAvMKN/wUodA== Return-Path: <__peter__@web.de> X-Original-To: python-de@python.org Delivered-To: python-de@mail.python.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1560976537; bh=puMdsJ8XZnKV64iXY9bJvf6rklWPkzbxk4pF4A4tdY0=; h=X-UI-Sender-Class:From:To:Subject:Date:In-Reply-To:References; b=rsJp2gzRDOZHPmNQ5AZ5jq7XQebwAuO1OpAYay/u02EiZP0E1EEi2WN/yQfjC8DtY oF2P4FFPesf2uJAZvWdOI95fsyE6LzG7ZgjGm9Ay65vOTeY7TVdLb+G2egWNGRUBgJ G2VxqI3PhZUMi1D/ftet/TKOVE/VzWcoA9MTo50U= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 User-Agent: KMail/4.13.3 (Linux/3.13.0-170-generic; KDE/4.13.3; x86_64; ; ) In-Reply-To: <8217725.EGQyf2vfZd@host> X-Provags-ID: V03:K1:g/aEXHD4Jk/3RbKnMBlDM3O8siwqmEvR7YYpM64KfNx9rUL2SM5 iMgKmpcCML93s5UkTKo/I3vKSYuhrGr3t0BUbEdrJWM2RjBuSSnlY3nZMl17rWrQVW9Dkqc CIGtrOp+fEycKMT5EnTX/GyHb70CNllDnnwzQmB+nDJrKvXwZ6wa/kOOHENUAraHGsIBxzP mYVtVFMnYQewrV9QaRJxw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:8Wa2BaKYGLc=:FqMIcds53RA+EvjLQ5mWGH nIPKaE5T9fxPrGvaLM4JMYhRxzGhFYlJqnGyaqjxxBxh5PWboKsNPM7QW/5mNPfY+3MJ76EyF C5O/2OpPIZNtbxhebXLwOb8Aj7zmlrqSLPtT0+LYi/u5V7uqzlFCLMX9vKFMxyAFpUWEHd6u8 qNOa4Uu1GZlWCJdr75HyWOES1tIdSXfjraeC66lD2LvKRC7FDz3eZ5Ss7jUeAiGChEPJ3UH8f sWWJjQij/RvZZehjTtXYJODaWa7fPGP2Zlv7WAcwTX4hKHuwlbl3hcS/sJfuCRX3ddbhpAIAp PIcLjbs1v9YyDdJ+HbNm0DpK6H1/eXhGGunwvzuyBWKgGxcPRw9h7gsKV9uZ0RruSV5a7ZNxx 7pQVqsflk+WcQ8mdXZ1YsuKmZ2l3wv8Rxg7463cpWye0nur7+3CsBpAQQRTNygIDyRW1yBN9P SI2gaqo8vNIRx3Jxe07NaX5vQKGsMGISVGEmHN5xXKnzh7Co2isbCfuprt3TJrg6O62510XsH uHqeLFbQVxx4e1oG5iFruw8MDP8Dm6V46Kl/8e0d0Ck1LxDQE3MYnkkWp5RlNmetlI9Kdsgs/ 4JCometPeuq7YaD/srl84DWf8fvSknDFj4+H9CO0WadSU9sBBTSsoPbscu+PXpkl249kxtyPb 4K4qmz8ZcMK6y94yNYulOn9Ad57l1/prGsU8tteVcz40dIz47dpM8Sl0bW8+w3qzmeXeg2grC abfKx9iychsRM4GWo3PV/5bW2Ko/EOJFKgcQ5FV+OcpidaEadtOfgtx5d2txF4KwSt2gm2CdF KE4zHaKogwMM54I3/A7APK6pEZMnptCcEZUdbameMDqJST3zxg0YbqaHx48fW30ECOy5sUJKe sAbE7l94K9euuqL2KMl3SCQI7ajS5PZXvXaeg+mE843zEck9f9aAs61asjVL9RCWv+A2icvVn lV14H0xemQu3FMngXRzOJFzLpF/uH0HXYAN+/xtSM3SGv6x6FmEzy X-BeenThere: python-de@python.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Die Deutsche Python Mailingliste List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <2233175.VqSBi401Pp@palindrom> X-Mailman-Original-References: <1825444.o0KX4FVeTt@host> <9390763f-1e2a-fb62-50ed-6b776764aec9@goebel-consult.de> <8217725.EGQyf2vfZd@host> Xref: csiph.com de.comp.lang.python:5496 eilfh wrote: > Am Mittwoch, 19. Juni 2019, 14:08:33 CEST schrieb Hartmut Goebel: >> immer "i-1" verwendest, kannst Du hier >> "range(spalten_anzahl)" verwenden. Das l=E4uft von 0 und bis >=20 >=20 > Danke f=FCr eure schnellen Antworten >=20 > @ Hartmut: > klappt tats=E4chlich, > nur ein Verst=E4ndnisproblem meinerseits : > Indizierung f=E4ngt bei 0 an (=3D das sind aber die Spalten-/bzw. die= > Zeilenk=F6pfe) Die "K=F6pfe" sind nicht per Index erreichbar: >>> df =3D pd.DataFrame([[1,2], [3,4], [5,6]], columns=3D["foo", "bar"]= ) >>> df.iloc[0,0] 1 Indizes einer Sequenz der L=E4nge N laufen von 0 bis N-1, >>> for i in range(3): ... print(i, "abc"[i]) ...=20 0 a 1 b 2 c negative Indizes z=E4hlen vom Ende einer Sequenz: >>> df.iloc[-1,0] 5 >>> "abc"[-1] 'c' >>> "abc"[-2] 'b' >>> "abc"[-3] 'a' > und dann aber i - 1, bzw. j - 1 --> 0 - 1 --> -1 ??? > aber Ergebnis stimmt (f=FCr dich sicher trivial!) > (irgendwie denk man wohl > -- auch nach vielen Jahren -- > immer noch in Turbo-Pascal-Strukturen) In deinem Code-Beispiel hast du aber von 0 bis N-1 indiziert, nur etwas= =20 umst=E4ndlich erst mit 1...N begonnen und dann jeweils 1 abgezogen.=20 Auf das Endergebnis hatte das keinen Einfluss: >>> [i-1 for i in range(1, N+1)] # du [0, 1, 2] >>> [i for i in range(N)] # =FCblich [0, 1, 2] > @Peter: > df1 =3D df.copy() > habe ich dankend =FCbernommen >=20 > df.as_matrix() > FutureWarning: Method .as_matrix, > das k=F6nnte ich aktualisieren (Use .values instead) M=F6glicherweise ist meine Pandas-Version ein bisschen =E4lter als dein= e ;) > aber: > meine DataFrames sind nicht quadratisch > (vermutl. deshalb scheitert das) > (hier im Testbsp.: 5 Spalten, 30 Zeilen) > Abbruch, Fehlermitteilung: > ValueError: Shape of passed values is (5, 30), indices imply (30, 30)= Das sollte eigentlich kein Problem sein. Hier ein vollst=E4ndiges Scrip= t, mit=20 3 Spalten und 4 Zeilen: $ cat tmp.py import pandas as pd df =3D pd.DataFrame( [[1.,2.,3.], [10, 20, 30], [7, 23, 64], [6, 6, 7]], columns=3D["foo", "bar", "baz"] ) print(df) a =3D df.values b =3D (a.T - a.mean(axis=3D1)).T - a.mean(axis=3D0) + a.mean() df1 =3D pd.DataFrame(b, columns=3Ddf) print(df1) Das gibt bei mir Folgendes aus: $ python3 tmp.py foo bar baz 0 1 2 3 1 10 20 30 2 7 23 64 3 6 6 7 [4 rows x 3 columns] foo bar baz 0 7.916667 2.166667 -10.083333 1 -1.083333 2.166667 -1.083333 2 -15.416667 -6.166667 21.583333 3 8.583333 1.833333 -10.416667 [4 rows x 3 columns] $=20 Produziert das bei dir ein Traceback (wenn ja, was genau)?