Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #5496

Re: [Python-de] Anfaengerfrage: Dataframe - Zeilenmittel - Spaltenmittel

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 <mailman.155.1560976545.21674.python-de@python.org> (permalink)
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 <python-de.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-de>, <mailto:python-de-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-de/>
List-Post <mailto:python-de@python.org>
List-Help <mailto:python-de-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-de>, <mailto:python-de-request@python.org?subject=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

Show key headers only | View raw


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äuft von 0 und bis
> 
> 
> Danke für eure schnellen Antworten
> 
> @ Hartmut:
> klappt tatsächlich,
> nur ein Verständnisproblem meinerseits :
> Indizierung fängt bei 0 an (= das sind aber die Spalten-/bzw. die
> Zeilenköpfe)

Die "Köpfe" sind nicht per Index erreichbar:

>>> df = pd.DataFrame([[1,2], [3,4], [5,6]], columns=["foo", "bar"])
>>> df.iloc[0,0]
1

Indizes einer Sequenz der Länge N laufen von 0 bis N-1,

>>> for i in range(3):
...     print(i, "abc"[i])
... 
0 a
1 b
2 c

negative Indizes zählen 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ür 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 
umständlich erst mit 1...N begonnen und dann jeweils 1 abgezogen. 
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)] # üblich
[0, 1, 2]


> @Peter:
> df1 = df.copy()
> habe ich dankend übernommen
> 
> df.as_matrix()
> FutureWarning: Method .as_matrix,
> das könnte ich aktualisieren (Use .values instead)

Möglicherweise ist meine Pandas-Version ein bisschen älter als deine ;)

> 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ändiges Script, mit 
3 Spalten und 4 Zeilen:

$ cat tmp.py
import pandas as pd

df = pd.DataFrame(
    [[1.,2.,3.], [10, 20, 30], [7, 23, 64], [6, 6, 7]],
    columns=["foo", "bar", "baz"]
)
print(df)

a = df.values
b = (a.T - a.mean(axis=1)).T - a.mean(axis=0) + a.mean()
df1 = pd.DataFrame(b, columns=df)

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]
$ 

Produziert das bei dir ein Traceback (wenn ja, was genau)?

Back to de.comp.lang.python | Previous | Next | Find similar


Thread

Re: [Python-de] Anfaengerfrage: Dataframe - Zeilenmittel - Spaltenmittel Peter Otten <__peter__@web.de> - 2019-06-19 22:35 +0200

csiph-web