Inhaltsverzeichnis
Verwendung des Str-Objekts
Verwendung von dt-Objekten
Verwendung des Katzenobjekts
Heim Backend-Entwicklung Python-Tutorial Bringen Sie Ihnen die coolen Pandas-Operationen bei, die 1 % der Menschen kennt

Bringen Sie Ihnen die coolen Pandas-Operationen bei, die 1 % der Menschen kennt

Oct 09, 2020 pm 04:55 PM
pandas

Die Kolumne

Python-Tutorial stellt heute die Funktionsweise von Pandas vor. Bringen Sie Ihnen die coolen Pandas-Operationen bei, die 1 % der Menschen kennt

pandas verfügt über eine sehr leistungsstarke Methode, nämlich accessor, die als Eigenschaftsschnittstelle verstanden werden kann, über die zusätzliche Methoden abgerufen werden können. Tatsächlich ist dies immer noch sehr allgemein. Lassen Sie es uns anhand von Code und Beispielen verstehen.

>>> pd.Series._accessors
{'cat', 'str', 'dt'}复制代码
Nach dem Login kopieren

Mit der _accessors-Methode für die Datenstruktur Series erhalten wir 3 Objekte: cat, str, dt.

  • .cat: für kategoriale Daten
  • .str: für Zeichendaten (String-Objektdaten)
  • .dt: für datetime-ähnliche Daten

Schauen wir uns an, wie diese drei Objekte funktionieren werden der Reihe nach verwendet.

Verwendung des Str-Objekts

Seriendatentyp: Str-String

# 定义一个Series序列
>>> addr = pd.Series([
...     'Washington, D.C. 20003',
...     'Brooklyn, NY 11211-1755',
...     'Omaha, NE 68154',
...     'Pittsburgh, PA 15211'
... ]) 

>>> addr.str.upper()
0     WASHINGTON, D.C. 20003
1    BROOKLYN, NY 11211-1755
2            OMAHA, NE 68154
3       PITTSBURGH, PA 15211
dtype: object

>>> addr.str.count(r'\d') 
0    5
1    9
2    5
3    5
dtype: int64复制代码
Nach dem Login kopieren

Über die beiden Methoden des obigen Str-Objekts:

  • Series.str.upper: Ändern Sie alle Zeichenfolgen in Serie in Großbuchstaben ;
  • Series.str.count: Zählt die Anzahl aller Strings in der Serie

Tatsächlich ist es nicht schwer festzustellen, dass die Verwendung dieser Verwendung der Operation von Strings in Python sehr ähnlich ist. Ja, Sie können solche einfachen Operationen in Pandas ausführen, aber der Unterschied besteht darin, dass Sie eine ganze Spalte mit Zeichenfolgendaten bearbeiten. Schauen wir uns immer noch basierend auf dem obigen Datensatz eine weitere Operation an:

>>> regex = (r&#39;(?P<city>[A-Za-z ]+), &#39;      # 一个或更多字母
...          r&#39;(?P<state>[A-Z]{2}) &#39;        # 两个大写字母
...          r&#39;(?P<zip>\d{5}(?:-\d{4})?)&#39;)  # 可选的4个延伸数字
...
>>> addr.str.replace(&#39;.&#39;, &#39;&#39;).str.extract(regex)
         city state         zip
0  Washington    DC       20003
1    Brooklyn    NY  11211-1755
2       Omaha    NE       68154
3  Pittsburgh    PA       15211复制代码
Nach dem Login kopieren

Beschreibung der beiden Methoden des obigen str-Objekts:

  • Series.str.replace: Ersetzen Sie die angegebene Zeichenfolge in Series;
  • Series .str.extract: Extrahieren Sie die Dateninformationen in der Zeichenfolge durch reguläre Ausdrücke.

Diese Verwendung ist etwas kompliziert, da es sich offensichtlich um eine Kettenverwendung handelt. Ersetzen Sie „.“ durch „“ durch replace, was leer ist Dann verwenden wir 3 reguläre Ausdrücke (entsprechend Stadt, Bundesland bzw. Postleitzahl), um die Daten durch Extrahieren zu extrahieren, und verwenden die ursprüngliche Datenstruktur der Serie eine DataFrame-Datenstruktur.

Zu den häufig verwendeten Attributen und Methoden gehören neben der oben genannten Verwendung natürlich auch .rstrip, .contains, split usw. Sehen wir uns die vollständige Liste der str-Attribute mit dem folgenden Code an:

>>> [i for i in dir(pd.Series.str) if not i.startswith(&#39;_&#39;)]
[&#39;capitalize&#39;,
 &#39;cat&#39;,
 &#39;center&#39;,
 &#39;contains&#39;,
 &#39;count&#39;,
 &#39;decode&#39;,
 &#39;encode&#39;,
 &#39;endswith&#39;,
 &#39;extract&#39;,
 &#39;extractall&#39;,
 &#39;find&#39;,
 &#39;findall&#39;,
 &#39;get&#39;,
 &#39;get_dummies&#39;,
 &#39;index&#39;,
 &#39;isalnum&#39;,
 &#39;isalpha&#39;,
 &#39;isdecimal&#39;,
 &#39;isdigit&#39;,
 &#39;islower&#39;,
 &#39;isnumeric&#39;,
 &#39;isspace&#39;,
 &#39;istitle&#39;,
 &#39;isupper&#39;,
 &#39;join&#39;,
 &#39;len&#39;,
 &#39;ljust&#39;,
 &#39;lower&#39;,
 &#39;lstrip&#39;,
 &#39;match&#39;,
 &#39;normalize&#39;,
 &#39;pad&#39;,
 &#39;partition&#39;,
 &#39;repeat&#39;,
 &#39;replace&#39;,
 &#39;rfind&#39;,
 &#39;rindex&#39;,
 &#39;rjust&#39;,
 &#39;rpartition&#39;,
 &#39;rsplit&#39;,
 &#39;rstrip&#39;,
 &#39;slice&#39;,
 &#39;slice_replace&#39;,
 &#39;split&#39;,
 &#39;startswith&#39;,
 &#39;strip&#39;,
 &#39;swapcase&#39;,
 &#39;title&#39;,
 &#39;translate&#39;,
 &#39;upper&#39;,
 &#39;wrap&#39;,
 &#39;zfill&#39;]复制代码
Nach dem Login kopieren

Es gibt viele Attribute, für spezifische Wenn Sie daran interessiert sind, es zu verwenden, können Sie es selbst erkunden und üben.

Verwendung von dt-Objekten

Seriendatentyp: datetime

Da die Daten den Typ datetime erfordern, wird im Folgenden date_range() von pandas verwendet, um eine Reihe von Datumsangaben datetime zu generieren und zu demonstrieren, wie dt-Objektoperationen ausgeführt werden.

>>> daterng = pd.Series(pd.date_range(&#39;2017&#39;, periods=9, freq=&#39;Q&#39;))
>>> daterng
0   2017-03-31
1   2017-06-30
2   2017-09-30
3   2017-12-31
4   2018-03-31
5   2018-06-30
6   2018-09-30
7   2018-12-31
8   2019-03-31
dtype: datetime64[ns]

>>>  daterng.dt.day_name()
0      Friday
1      Friday
2    Saturday
3      Sunday
4    Saturday
5    Saturday
6      Sunday
7      Monday
8      Sunday
dtype: object

>>> # 查看下半年
>>> daterng[daterng.dt.quarter > 2]
2   2017-09-30
3   2017-12-31
6   2018-09-30
7   2018-12-31
dtype: datetime64[ns]

>>> daterng[daterng.dt.is_year_end]
3   2017-12-31
7   2018-12-31
dtype: datetime64[ns]复制代码
Nach dem Login kopieren

Die oben genannten drei Methoden zu dt:

  • Series.dt.day_name(): Beurteilen Sie die Anzahl der Wochen ab dem Datum;
  • Series.dt.quarter: Beurteilen Sie die Saison anhand des Datums;
  • Series.dt.is_year_end: Beurteilen Sie anhand des Datums, ob es das Ende des Jahres ist.

Andere Methoden basieren ebenfalls auf einigen Datums- und Uhrzeittransformationen und verwenden Transformationen, um bestimmte Mikro- oder Makrodaten anzuzeigen.

Verwendung des Katzenobjekts

Seriendatentyp: Kategorie

Bevor wir über die Verwendung des Katzenobjekts sprechen, sprechen wir über den Kategoriedatentyp, der sehr leistungsfähig ist. Obwohl wir G-Daten nicht häufig im Speicher ausführen, kommt es immer wieder zu Situationen, in denen die Ausführung einiger Codezeilen lange auf sich warten lässt. Ein Vorteil der Verwendung von Kategoriedaten besteht darin, dass dadurch Zeit und Platz gespart werden können. Lassen Sie es uns anhand mehrerer Beispiele lernen.

>>> colors = pd.Series([
...     &#39;periwinkle&#39;,
...     &#39;mint green&#39;,
...     &#39;burnt orange&#39;,
...     &#39;periwinkle&#39;,
...     &#39;burnt orange&#39;,
...     &#39;rose&#39;,
...     &#39;rose&#39;,
...     &#39;mint green&#39;,
...     &#39;rose&#39;,
...     &#39;navy&#39;
... ])
...
>>> import sys
>>> colors.apply(sys.getsizeof)
0    59
1    59
2    61
3    59
4    61
5    53
6    53
7    59
8    53
9    53
dtype: int64复制代码
Nach dem Login kopieren

Oben haben wir

sys.getsizeof verwendet, um die Speichernutzung anzuzeigen, und die Zahl stellt die Anzahl der Bytes dar. Es gibt eine andere Möglichkeit, die Inhaltsnutzung zu berechnen:
memory_usage(), die später verwendet wird.

Jetzt ordnen wir die eindeutigen Werte der oben genannten Farben einer Reihe von Ganzzahlen zu und werfen dann einen Blick auf den belegten Speicher.

>>> mapper = {v: k for k, v in enumerate(colors.unique())}
>>> mapper
{&#39;periwinkle&#39;: 0, &#39;mint green&#39;: 1, &#39;burnt orange&#39;: 2, &#39;rose&#39;: 3, &#39;navy&#39;: 4}

>>> as_int = colors.map(mapper)
>>> as_int
0    0
1    1
2    2
3    0
4    2
5    3
6    3
7    1
8    3
9    4
dtype: int64

>>> as_int.apply(sys.getsizeof)
0    24
1    28
2    28
3    24
4    28
5    28
6    28
7    28
8    28
9    28
dtype: int64复制代码
Nach dem Login kopieren

Hinweis: Für die obige Ganzzahlwertzuordnung können Sie stattdessen auch die einfachere Methode

pd.factorize() verwenden.

Wir haben festgestellt, dass der oben belegte Speicher halb so groß ist wie bei Verwendung des Objekttyps. Tatsächlich ähnelt diese Situation dem internen Prinzip des Kategoriedatentyps.

Unterschied in der Speichernutzung: Der von Categorical belegte Speicher ist proportional zur Anzahl der kategorialen Kategorien und der Länge der Daten. Im Gegenteil, der vom Objekt belegte Speicher ist eine Konstante multipliziert mit der Länge der Daten.

Das Folgende ist ein Vergleich der Objektspeichernutzung und der Kategoriespeichernutzung.

>>> colors.memory_usage(index=False, deep=True)
650
>>> colors.astype(&#39;category&#39;).memory_usage(index=False, deep=True)
495复制代码
Nach dem Login kopieren

上面结果是使用object和Category两种情况下内存的占用情况。我们发现效果并没有我们想象中的那么好。但是注意Category内存是成比例的,如果数据集的数据量很大,但不重复分类(unique)值很少的情况下,那么Category的内存占用可以节省达到10倍以上,比如下面数据量增大的情况:

>>> manycolors = colors.repeat(10)
>>> len(manycolors) / manycolors.nunique() 
20.0

>>> manycolors.memory_usage(index=False, deep=True)
6500
>>> manycolors.astype(&#39;category&#39;).memory_usage(index=False, deep=True)
585复制代码
Nach dem Login kopieren

可以看到,在数据量增加10倍以后,使用Category所占内容节省了10倍以上。

除了占用内存节省外,另一个额外的好处是计算效率有了很大的提升。因为对于Category类型的Series,str字符的操作发生在.cat.categories的非重复值上,而并非原Series上的所有元素上。也就是说对于每个非重复值都只做一次操作,然后再向与非重复值同类的值映射过去。

对于Category的数据类型,可以使用accessor的cat对象,以及相应的属性和方法来操作Category数据。

>>> ccolors = colors.astype(&#39;category&#39;)
>>> ccolors.cat.categories
Index([&#39;burnt orange&#39;, &#39;mint green&#39;, &#39;navy&#39;, &#39;periwinkle&#39;, &#39;rose&#39;], dtype=&#39;object&#39;)复制代码
Nach dem Login kopieren

实际上,对于开始的整数类型映射,我们可以先通过reorder_categories进行重新排序,然后再使用cat.codes来实现对整数的映射,来达到同样的效果。

>>> ccolors.cat.reorder_categories(mapper).cat.codes
0    0
1    1
2    2
3    0
4    2
5    3
6    3
7    1
8    3
9    4
dtype: int8复制代码
Nach dem Login kopieren

dtype类型是Numpy的int8(-127~128)。可以看出以上只需要一个单字节就可以在内存中包含所有的值。我们开始的做法默认使用了int64类型,然而通过pandas的使用可以很智能的将Category数据类型变为最小的类型。

让我们来看一下cat还有什么其它的属性和方法可以使用。下面cat的这些属性基本都是关于查看和操作Category数据类型的。

>>> [i for i in dir(ccolors.cat) if not i.startswith(&#39;_&#39;)]
[&#39;add_categories&#39;,
 &#39;as_ordered&#39;,
 &#39;as_unordered&#39;,
 &#39;categories&#39;,
 &#39;codes&#39;,
 &#39;ordered&#39;,
 &#39;remove_categories&#39;,
 &#39;remove_unused_categories&#39;,
 &#39;rename_categories&#39;,
 &#39;reorder_categories&#39;,
 &#39;set_categories&#39;]复制代码
Nach dem Login kopieren

但是Category数据的使用不是很灵活。例如,插入一个之前没有的值,首先需要将这个值添加到.categories的容器中,然后再添加值。

>>> ccolors.iloc[5] = &#39;a new color&#39;
# ...
ValueError: Cannot setitem on a Categorical with a new category,
set the categories first

>>> ccolors = ccolors.cat.add_categories([&#39;a new color&#39;])
>>> ccolors.iloc[5] = &#39;a new color&#39;  
复制代码
Nach dem Login kopieren

如果你想设置值或重塑数据,而非进行新的运算操作,那么Category类型不是那么有用。

相关免费学习推荐:python教程(视频)

Das obige ist der detaillierte Inhalt vonBringen Sie Ihnen die coolen Pandas-Operationen bei, die 1 % der Menschen kennt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Lösung häufiger Pandas-Installationsprobleme: Interpretation und Lösungen für Installationsfehler Lösung häufiger Pandas-Installationsprobleme: Interpretation und Lösungen für Installationsfehler Feb 19, 2024 am 09:19 AM

Pandas-Installations-Tutorial: Analyse häufiger Installationsfehler und ihrer Lösungen. Es sind spezifische Codebeispiele erforderlich. Einführung: Pandas ist ein leistungsstarkes Datenanalysetool, das in der Datenbereinigung, Datenverarbeitung und Datenvisualisierung weit verbreitet ist und daher in der Branche hohes Ansehen genießt der Datenwissenschaft. Aufgrund von Umgebungskonfigurations- und Abhängigkeitsproblemen können jedoch bei der Installation von Pandas einige Schwierigkeiten und Fehler auftreten. In diesem Artikel erhalten Sie ein Pandas-Installations-Tutorial und analysieren einige häufige Installationsfehler und deren Lösungen. 1. Pandas installieren

So lesen Sie eine TXT-Datei mit Pandas richtig So lesen Sie eine TXT-Datei mit Pandas richtig Jan 19, 2024 am 08:39 AM

Um Pandas zum korrekten Lesen von TXT-Dateien zu verwenden, sind bestimmte Codebeispiele erforderlich. Pandas ist eine weit verbreitete Python-Datenanalysebibliothek. Sie kann zur Verarbeitung einer Vielzahl von Datentypen verwendet werden, einschließlich CSV-Dateien, Excel-Dateien, SQL-Datenbanken usw. Gleichzeitig können damit auch Textdateien, beispielsweise TXT-Dateien, gelesen werden. Beim Lesen von TXT-Dateien treten jedoch manchmal Probleme auf, z. B. Codierungsprobleme, Trennzeichenprobleme usw. In diesem Artikel erfahren Sie, wie Sie TXT mit Pandas richtig lesen

Python-Pandas-Installationsmethode Python-Pandas-Installationsmethode Nov 22, 2023 pm 02:33 PM

Python kann Pandas mithilfe von Pip, Conda, aus dem Quellcode und mithilfe des in die IDE integrierten Paketverwaltungstools installieren. Detaillierte Einführung: 1. Verwenden Sie pip und führen Sie den Befehl „pip install pandas“ im Terminal oder in der Eingabeaufforderung aus, um Pandas zu installieren. 2. Verwenden Sie conda und führen Sie den Befehl „conda install pandas“ im Terminal oder in der Eingabeaufforderung aus, um Pandas zu installieren Installation und mehr.

Lesen Sie CSV-Dateien und führen Sie eine Datenanalyse mit Pandas durch Lesen Sie CSV-Dateien und führen Sie eine Datenanalyse mit Pandas durch Jan 09, 2024 am 09:26 AM

Pandas ist ein leistungsstarkes Datenanalysetool, das verschiedene Arten von Datendateien problemlos lesen und verarbeiten kann. Unter diesen sind CSV-Dateien eines der gebräuchlichsten und am häufigsten verwendeten Datendateiformate. In diesem Artikel wird erläutert, wie Sie mit Pandas CSV-Dateien lesen und Datenanalysen durchführen, und es werden spezifische Codebeispiele bereitgestellt. 1. Importieren Sie die erforderlichen Bibliotheken. Zuerst müssen wir die Pandas-Bibliothek und andere möglicherweise benötigte verwandte Bibliotheken importieren, wie unten gezeigt: importpandasaspd 2. Lesen Sie die CSV-Datei mit Pan

So installieren Sie Pandas in Python So installieren Sie Pandas in Python Dec 04, 2023 pm 02:48 PM

Schritte zum Installieren von Pandas in Python: 1. Öffnen Sie das Terminal oder die Eingabeaufforderung. 2. Geben Sie den Befehl „pip install pandas“ ein, um die Pandas-Bibliothek zu installieren. 3. Warten Sie, bis die Installation abgeschlossen ist. Anschließend können Sie die Pandas-Bibliothek importieren und verwenden im Python-Skript; 4. Stellen Sie sicher, dass Sie die entsprechende virtuelle Umgebung aktivieren, bevor Sie Pandas installieren. 5. Wenn Sie eine integrierte Entwicklungsumgebung verwenden, können Sie den Code „Pandas als PD importieren“ hinzufügen Importieren Sie die Pandas-Bibliothek.

Praktische Tipps zum Lesen von TXT-Dateien mit Pandas Praktische Tipps zum Lesen von TXT-Dateien mit Pandas Jan 19, 2024 am 09:49 AM

Praktische Tipps zum Lesen von TXT-Dateien mit Pandas. In der Datenanalyse und Datenverarbeitung sind TXT-Dateien ein gängiges Datenformat. Die Verwendung von Pandas zum Lesen von TXT-Dateien ermöglicht eine schnelle und bequeme Datenverarbeitung. In diesem Artikel werden verschiedene praktische Techniken vorgestellt, die Ihnen dabei helfen, Pandas besser zum Lesen von TXT-Dateien zu verwenden, sowie spezifische Codebeispiele. TXT-Dateien mit Trennzeichen lesen Wenn Sie Pandas zum Lesen von TXT-Dateien mit Trennzeichen verwenden, können Sie read_c verwenden

Vorstellung der effizienten Datendeduplizierungsmethode in Pandas: Tipps zum schnellen Entfernen doppelter Daten Vorstellung der effizienten Datendeduplizierungsmethode in Pandas: Tipps zum schnellen Entfernen doppelter Daten Jan 24, 2024 am 08:12 AM

Das Geheimnis der Pandas-Deduplizierungsmethode: eine schnelle und effiziente Methode zur Datendeduplizierung, die spezifische Codebeispiele erfordert. Bei der Datenanalyse und -verarbeitung kommt es häufig zu Duplikaten in den Daten. Doppelte Daten können die Analyseergebnisse verfälschen, daher ist die Deduplizierung ein sehr wichtiger Schritt. Pandas, eine leistungsstarke Datenverarbeitungsbibliothek, bietet eine Vielzahl von Methoden zur Datendeduplizierung. In diesem Artikel werden einige häufig verwendete Deduplizierungsmethoden vorgestellt und spezifische Codebeispiele angehängt. Der häufigste Fall der Deduplizierung basierend auf einer einzelnen Spalte basiert darauf, ob der Wert einer bestimmten Spalte dupliziert wird.

Pandas liest problemlos Daten aus der SQL-Datenbank Pandas liest problemlos Daten aus der SQL-Datenbank Jan 09, 2024 pm 10:45 PM

Datenverarbeitungstool: Pandas liest Daten in SQL-Datenbanken und erfordert spezifische Codebeispiele. Da die Datenmenge weiter wächst und ihre Komplexität zunimmt, ist die Datenverarbeitung zu einem wichtigen Bestandteil der modernen Gesellschaft geworden. Im Datenverarbeitungsprozess ist Pandas für viele Datenanalysten und Wissenschaftler zu einem der bevorzugten Tools geworden. In diesem Artikel wird die Verwendung der Pandas-Bibliothek zum Lesen von Daten aus einer SQL-Datenbank vorgestellt und einige spezifische Codebeispiele bereitgestellt. Pandas ist ein leistungsstarkes Datenverarbeitungs- und Analysetool auf Basis von Python

See all articles