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

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 **

Der Link der Seite, auf die ich zuerst verwiesen habe, wurde nur zum ersten Mal geändert.

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 ich mein Herz schädige ~~.

Diese Lösung ist falsch! Diese Interpretation ist anders! Bitte kommentieren Sie, wenn Sie welche haben.

Diesmal von 33 bis 35. [Letztes Mal] 29-32 [Zum ersten Mal mit Inhaltsverzeichnis]

33

P-033: Berechnen Sie den durchschnittlichen Verkaufsbetrag (Betrag) für jeden Geschäftscode (store_cd) für den Datenrahmen für Belegdetails (df_receipt) und extrahieren Sie 330 oder mehr.

mine33.py


df=df_receipt
df=df.groupby('store_cd').agg({'amount':'mean'}).query("amount>=330")
df

'''Musterantwort'''
df_receipt.groupby('store_cd').amount.mean().reset_index().query('amount >= 330')

Probleme wie bisherige Überprüfung. Geben Sie den Bereich der Berechnungsdaten mit guroupby an Fügen Sie mit agg und eine Bedienzeile hinzu Geben Sie die Bedingung mit Abfrage an.

Wenn Sie denken, dass es nur ist, lautet die Modellantwort ".amount.mean ()" Das war's. Es scheint jedoch, dass es möglicherweise nicht funktioniert, wenn Sie die Spaltenspezifikationen schreiben, indem Sie sie mit "." Verbinden. Seien Sie also vorsichtig.

~~ Ich bin der Abfrage erlegen ~~ Ich denke, es wäre schön, den praktischen Teil der Modellantwort verwenden zu können, indem man ihn auf diese Weise zusammenfasst.

34 ..

P-034: Addieren Sie für den Datenrahmen für Belegdetails (df_receipt) den Verkaufsbetrag (Betrag) für jede Kunden-ID (customer_id) und berechnen Sie den Durchschnitt aller Kunden. Wenn die Kunden-ID jedoch mit "Z" beginnt, handelt es sich um ein Nichtmitglied. Schließen Sie sie daher von der Berechnung aus.

mine34.py


df=df_receipt
df=df[df['customer_id'].str.contains('^[^Z]')].reset_index()
df.groupby('customer_id').amount.sum().mean()

'''Musterantwort'''
#Wie schreibe ich ohne Abfrage
df_receipt[~df_receipt['customer_id'].str.startswith("Z")].groupby('customer_id').amount.sum().mean()

#Wie schreibe ich mit Abfrage
df_receipt.query('not customer_id.str.startswith("Z")', engine='python').groupby('customer_id').amount.sum().mean()

Diesmal war es eine Frage mit zwei Mustern von Modellantworten. Ich benutze enthält und benutze begin mit in der Modellantwort. Wenn Sie in gewissem Maße an reguläre Ausdrücke gewöhnt sind, ist "enthält" einfacher zu schreiben, aber ist es schneller zu antworten, weil "startwith" nur nach vorne schaut?

Außerdem habe ich im regulären Ausdruck "andere als diejenigen, die mit Z beginnen" angegeben, aber beide Modellantworten definieren "Dinge, die mit Z beginnen" und sind "anders als das". Wenn der reguläre Ausdruck zu lang ist, dauert das Lesen einige Zeit. Wenn er zu lang ist, frage ich mich, ob dies der Fall ist.

Wenn Sie dieses Problem in SQL schreiben

py34.sql


SELECT SUM(amount)/COUNT(DISTINCT customer_id)
FROM receipt
WHERE NOT customer_id LIKE 'Z%'

Ich denke, es wird sich so anfühlen (Operation vorerst bestätigt)

35 ..

P-035: Addieren Sie für den Datenrahmen der Belegabrechnung (df_receipt) den Verkaufsbetrag (Betrag) für jede Kunden-ID (customer_id), um den Durchschnitt aller Kunden zu ermitteln, und extrahieren Sie die Kunden, die über dem Durchschnitt einkaufen. .. Wenn die Kunden-ID jedoch mit "Z" beginnt, handelt es sich um ein Nichtmitglied. Schließen Sie sie daher von der Berechnung aus. Es müssen nur 10 Daten angezeigt werden.

mine35.py


df=df_receipt
df=df[df['customer_id'].str.contains('^[^Z]')].reset_index()
df=df.groupby('customer_id').amount.sum().reset_index()
df[df['amount'].mean() <= df['amount']].head(10)

'''Musterantwort'''
amount_mean = df_receipt[~df_receipt['customer_id'].str.startswith("Z")].groupby('customer_id').amount.sum().mean()
df_amount_sum = df_receipt.groupby('customer_id').amount.sum().reset_index()
df_amount_sum[df_amount_sum['amount'] >= amount_mean].head(10)

Schließlich wird der Code für die Modellantwort länger. Danke an die beiden Buchstaben ~~ df ~~

Beim Schreiben war ich mir sehr bewusst, welche Berechnung für das Datenfeld durchgeführt wurde. Die Modellantwort ist auch in "amount_mean" und "df_amount_sum" unterteilt.

  1. df=df_receipt
  1. df=df[df['customer_id'].str.contains('^[^Z]')].reset_index()
  1. df=df.groupby('customer_id').amount.sum().reset_index()
  1. df[df['amount'].mean() <= df['amount']].head(10)

Ich habe mich nicht auf den Durchschnitt bezogen, außer auf den Vergleich von 4, und ich wollte nicht zwei dfs machen, also habe ich diesmal geschrieben. Das Problem besteht natürlich darin, zuerst den Durchschnitt zu ermitteln. Wenn Sie den Durchschnitt also in anderen Prozessen verwenden möchten, ist dieses Schreiben möglicherweise falsch.

In jedem Fall werden wir den "Durchschnitt der Summen" und die "Summen" vergleichen, also werden wir diesen Vergleich in 4 machen.

Das häufige Auftreten von ~~ .reset_index () hat auch die Bedeutung von Magie ~~

Bis hierher für diese Zeit

Es ist ein wenig kurz, da die Tabellenverknüpfung beim nächsten Mal beginnt und auf halbem Weg ist, also werde ich sie hier brechen. ~~ Aus diesem Grund habe ich mit Fragensätzen und Modellantworten sogar ein wenig verdient ~~

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)
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