[PYTHON] Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil3

Dies ist ein Kampfbericht über das Klopfen von 100 Eiern, ohne das Ei des Datenwissenschaftlers zu kennen. Es ist ein Rätsel, ob ich das Rennen beenden kann. ~~ Auch wenn es unterwegs verschwindet, denken Sie bitte, dass es Qiita nicht gegeben wird. ~~

100 Klopfartikel 100 Knock Guide

** Sei vorsichtig, wenn du es versuchst, da es Spoiler enthält **

Zum Zeitpunkt des Schreibens des Artikels war ich bis zum 27. Buch fertig, aber es gab viele Schreibstile, die ich nicht kannte, und es gab viele Dinge, die "Ich habe das geschrieben, aber die Antwort war das", also werde ich es als Memo hinterlassen.

Das ist schwer zu sehen! Diese Schreibweise ist gefährlich! Wenn Sie Fragen haben, lassen Sie es mich bitte wissen. ~~ Ich werde es als Nahrung verwenden, während mein Herz geschädigt wird.

Diesmal von 19 bis 22. [Letztes Mal] 10-18 Zum ersten Mal mit Inhaltsverzeichnis

Der Kampf beginnt hier

19 ..

P-19: Geben Sie dem Datenrahmen für Belegdetails (df_receipt) in absteigender Reihenfolge des Verkaufsbetrags (Betrag) pro Artikel Ränge und extrahieren Sie die ersten 10 Artikel. Artikel sollten Kunden-ID (customer_id), Verkaufsbetrag (Betrag) und zugewiesenen Rang anzeigen. Ist der Verkaufsbetrag gleich, wird die gleiche Rangfolge angegeben.

Die Anforderung ist diesmal

id amo rank
A00 100 1
B00 70 2
C00 80 2
D00 70 4

Es scheint, dass es darum geht, einen Tisch in Form zu machen In SQL

rei.sql


SELECT id,amo amo,
(SELECT count(amo) FROM df b WHERE a.amo < b.amo)+1 rank
FROM df a ORDER BY rank 

(Ich habe SQL nach langer Zeit getroffen) Derzeit wird die Anzahl der Verkäufe "b.amo" gezählt, die höher sind als die Verkäufe, die "amo" und "a.amo" derzeit betrachten (weil der größte 0 ist) + 1 Der Inhalt besteht darin, einen Rang zu erstellen und diese Spalte hinzuzufügen. ** Achtung **: Dies ist ein Schreibstil, dessen Berechnung viel Zeit in Anspruch nimmt. Ich habe es mit 10 Knocks SQL versucht, aber es hat ein paar Minuten gedauert.

** Gleiches gilt für Dataframe ** df_receipt[['customer_id', 'amount']] Und Rang Spalte und verbinden (horizontal), um eine Tabelle zu erstellen

Wie erstelle ich eine "Rangspalte"? df_receipt['amount'].rank(method='min', ascending=False)

** Horizontal verbinden ** pd.concat ([['Spalte A'], ['Spalte B']], Achse = 1) ` Es scheint, dass "pd.concat" vertikal verbunden ist (die Tabelle wird am unteren Rand der Tabelle angehängt), wenn die Achse die Standardeinstellung ist, aber horizontal verbunden wird, wenn "Achse = 1" hinzugefügt wird.

Schließlich, wenn Sie den Spaltennamen ändern und nach aufsteigendem Rang sortieren

mine19.py


df_tmp = pd.concat([df_receipt[['customer_id', 'amount']] ,df_receipt['amount'].rank(method='min', ascending=False)], axis=1)
df_tmp.columns = ['customer_id', 'amount', 'ranking']
df_tmp.sort_values('ranking', ascending=True).head(10)

Wird so sein

** Natürlich ** Ich weiß es nicht und es ist Konserven

20 ..

mine20.py


df=df_receipt
df=pd.concat([df[['customer_id','amount']] ,df['amount'].rank(method='first',ascending=False) ],axis=1)
df.columns=['customer_id','amount','ranking']
df.sort_values('ranking',ascending=True).head(10)

Ich werde es weglassen, weil der 19. und einige Inhalte behandelt werden Der Teil, der sich ändert

Geben Sie außerdem ein anderes Ranking an, auch wenn der Verkaufsbetrag (Betrag) gleich ist.

Teil von. Das heißt, als Anzeige

id amo rank
A00 100 1
B00 70 2
C00 80 3
D00 70 4

Ich möchte die Form annehmen.

-method = 'min' gibt eine kleine Zahl (Mindestwert) als Rangdaten zurück.

Sie können dies ändern und nach der Konvertierung in Daten absteigender Reihenfolge, indem Sie "min" in "first" ändern, werden die Nummern in der Reihenfolge ihres Auftretens nummeriert.

21,22

mine21.py


len(df_receipt)

mine22.py


len(df_receipt['customer_id'].unique())

~~ Hast du einen Kommentar? ~~ Wenn Sie den 22. in SQL konvertieren SELECT COUNT(DISTINCT customer_id) FROM receipt Ich kann gehen. ~~ Was ist einfacher? ~~

Bis hierher für diese Zeit

Ich hatte das Gefühl, dass Python schneller als SQL war, als ich SQL und Python mit dem tatsächlichen Rang verglich, und so fand ich endlich Sinn in der Verwendung von Pandas. ~~ LIKE und SQL sind einfach ~~ Wenn Sie das Problem nur lösen, fällt es Ihnen nicht wirklich ein, daher möchte ich das Problem erneut lösen und es dann lösen.

Recommended Posts

Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil3
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil6
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil2
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil1
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil9
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil7
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil4
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil11
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil5
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil10
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil8
Data Science 100 Klopfkommentar (P021 ~ 040)
Data Science 100 Klopfkommentar (P061 ~ 080)
Data Science 100 Klopfkommentar (P041 ~ 060)
Data Science 100 Klopfkommentar (P081 ~ 100)
Implementieren von 100 Data Science-Schlägen für Anfänger in Data Science (für Windows 10 Home)
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-007 Erläuterung
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-006 Erläuterung
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-001 Erläuterung
Erkennung von Zeitreihendatenanomalien für Anfänger
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-002 Erläuterung
[Python] 100 Schläge auf Data Science (strukturierte Datenverarbeitung) 021 Erläuterung
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-005 Erläuterung
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-004 Erläuterung
[Python] 100 Schläge auf Data Science (strukturierte Datenverarbeitung) 020 Erläuterung
[Python] 100 Schläge auf Data Science (strukturierte Datenverarbeitung) 025 Erläuterung
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-003 Erläuterung
[Python] 100 Schläge auf Data Science (strukturierte Datenverarbeitung) 019 Erläuterung
[Praktisch für Anfänger] Lesen Sie zaggles "Predicting Home Prices" Zeile für Zeile (Teil 1: Lesen von Daten)
[Linux-Befehl] Liste weniger Befehlsoptionen [Muss für Anfänger sein]
Verwendung von Datenanalysetools für Anfänger
Vorbereitung zum Versuch "Data Science 100 Knock (Strukturierte Datenverarbeitung)"
Umgebungskonstruktion (Windows 10) für 100 Schläge Data Science (strukturierte Datenverarbeitung)
Pandas-Grundlagen für Anfänger ② Übersicht über die Daten