webentwicklung-frage-antwort-db.com.de

Was sind Python-Pandas-Entsprechungen für R-Funktionen wie str (), summary () und head ()?

Mir ist nur die Funktion describe() bekannt. Gibt es andere Funktionen, die str(), summary() und head() ähnlich sind?

27
megashigger
  • summary() ~ describe()
  • head() ~ head()

Ich bin mir nicht sicher über das Äquivalent str().

11
omer sagy

In Pandas erzeugt die info()-Methode eine sehr ähnliche Ausgabe wie die str() von R:

> str(train)
'data.frame':   891 obs. of  13 variables:
 $ PassengerId: int  1 2 3 4 5 6 7 8 9 10 ...
 $ Survived   : int  0 1 1 1 0 0 0 0 1 1 ...
 $ Pclass     : int  3 1 3 1 3 3 1 3 3 2 ...
 $ Name       : Factor w/ 891 levels "Abbing, Mr. Anthony",..: 109 191 358 277 16 559 520 629 417 581 ...
 $ Sex        : Factor w/ 2 levels "female","male": 2 1 1 1 2 2 2 2 1 1 ...
 $ Age        : num  22 38 26 35 35 NA 54 2 27 14 ...
 $ SibSp      : int  1 1 0 1 0 0 0 3 0 1 ...
 $ Parch      : int  0 0 0 0 0 0 0 1 2 0 ...
 $ Ticket     : Factor w/ 681 levels "110152","110413",..: 524 597 670 50 473 276 86 396 345 133 ...
 $ Fare       : num  7.25 71.28 7.92 53.1 8.05 ...
 $ Cabin      : Factor w/ 148 levels "","A10","A14",..: 1 83 1 57 1 1 131 1 1 1 ...
 $ Embarked   : Factor w/ 4 levels "","C","Q","S": 4 2 4 4 4 3 4 4 4 2 ...
 $ Child      : num  0 0 0 0 0 NA 0 1 0 1 ...


train.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId    891 non-null int64
Survived       891 non-null int64
Pclass         891 non-null int64
Name           891 non-null object
Sex            891 non-null object
Age            714 non-null float64
SibSp          891 non-null int64
Parch          891 non-null int64
Ticket         891 non-null object
Fare           891 non-null float64
Cabin          204 non-null object
Embarked       889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.6+ KB
29
reedcourty

Dies liefert eine Ausgabe ähnlich der von R str(). Es werden eindeutige Werte anstelle von Anfangswerten angezeigt.

def rstr(df): return df.shape, df.apply(lambda x: [x.unique()])

print(rstr(iris))

((150, 5), sepal_length    [[5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.4, 4.8, 4.3,...
sepal_width     [[3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 2.9, 3.7,...
petal_length    [[1.4, 1.3, 1.5, 1.7, 1.6, 1.1, 1.2, 1.0, 1.9,...
petal_width     [[0.2, 0.4, 0.3, 0.1, 0.5, 0.6, 1.4, 1.5, 1.3,...
class            [[Iris-setosa, Iris-versicolor, Iris-virginica]]
dtype: object)
26
jjurach

Pandas bietet einen umfangreichen Vergleich mit R/R-Bibliotheken . Der offensichtlichste Unterschied ist, dass R die funktionale Programmierung bevorzugt, während Pandas objektorientiert ist, wobei der Datenrahmen das Schlüsselobjekt ist. Ein weiterer Unterschied zwischen R und Python ist, dass Python Arrays bei 0 beginnt, R jedoch bei 1.

R               | Pandas
-------------------------------
summary(df)     | df.describe()
head(df)        | df.head()
dim(df)         | df.shape
slice(df, 1:10) | df.iloc[:9]
7
Martin Thoma

Für ein Python-Äquivalent zur Funktion str() in R verwende ich die Methode dtypes. Dadurch werden die Datentypen für jede Spalte bereitgestellt.

In [22]: df2.dtypes
Out[22]: 
Survived      int64
Pclass        int64
Sex          object
Age         float64
SibSp         int64
Parch         int64
Ticket       object
Fare        float64
Cabin        object
Embarked     object
dtype: object
7
fubar2021

Ich bevorzuge immer noch str(), weil es einige Beispiele aufführt. Ein verwirrender Aspekt von info ist, dass sein Verhalten von einigen Umgebungseinstellungen wie pandas.options.display.max_info_columns abhängt.

Ich denke, die beste Alternative ist, info mit einigen anderen Parametern aufzurufen, die ein festes Verhalten erzwingen:

df.info(null_counts=True, verbose=True)

Und für Ihre anderen Funktionen:

summary(df)     | df.describe()
head(df)        | df.head()
dim(df)         | df.shape
1
neves

Ich weiß nicht viel über R, aber hier sind einige Hinweise:

str => 

schwierig ... für Funktionen können Sie dir () verwenden, dir () für Datensätze gibt Ihnen alle Methoden, also ist es vielleicht nicht das, was Sie wollen ... 

summary => describe. 

Siehe die Parameter zum Anpassen der Ergebnisse.

head => your can use head(), or use slices. 

kopf wie du schon. So erhalten Sie die ersten 10 Zeilen eines Datasets namens ds ds[:10] für tail ds[:-10]

1
Wakaru44