Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσω

Αναζητώντας για R ή Python στο Διαδίκτυο, θα βρείτε εκατομμύρια άρθρα και χιλιόμετρα συζητήσεων σχετικά με το ποιο είναι καλύτερο, πιο γρήγορο και πιο βολικό για εργασία με δεδομένα. Αλλά δυστυχώς, όλα αυτά τα άρθρα και οι διαφωνίες δεν είναι ιδιαίτερα χρήσιμα.

Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσω

Ο σκοπός αυτού του άρθρου είναι να συγκρίνει τις βασικές τεχνικές επεξεργασίας δεδομένων στα πιο δημοφιλή πακέτα και των δύο γλωσσών. Και βοηθήστε τους αναγνώστες να κατακτήσουν γρήγορα κάτι που δεν γνωρίζουν ακόμα. Για όσους γράφουν σε Python, μάθετε πώς να κάνετε το ίδιο πράγμα στο R και το αντίστροφο.

Κατά τη διάρκεια του άρθρου θα αναλύσουμε τη σύνταξη των πιο δημοφιλών πακέτων στο R. Αυτά είναι τα πακέτα που περιλαμβάνονται στη βιβλιοθήκη tidyverseκαι επίσης το πακέτο data.table. Και συγκρίνετε τη σύνταξή τους με pandas, το πιο δημοφιλές πακέτο ανάλυσης δεδομένων στην Python.

Θα προχωρήσουμε βήμα προς βήμα σε ολόκληρη τη διαδρομή της ανάλυσης δεδομένων από τη φόρτωσή τους έως την εκτέλεση αναλυτικών συναρτήσεων παραθύρου χρησιμοποιώντας Python και R.

περιεχόμενο

Αυτό το άρθρο μπορεί να χρησιμοποιηθεί ως φύλλο εξαπάτησης εάν έχετε ξεχάσει πώς να εκτελέσετε κάποια λειτουργία επεξεργασίας δεδομένων σε ένα από τα υπό εξέταση πακέτα.

Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσω

  1. Κύριες συντακτικές διαφορές μεταξύ R και Python
    1.1. Πρόσβαση στις Λειτουργίες πακέτου
    1.2. ΑΝΑΘΕΣΗ ΕΡΓΑΣΙΑΣ
    1.3. Ευρετηρίαση
    1.4. Μέθοδοι και OOP
    1.5. Σωληνώσεις
    1.6. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
  2. Λίγα λόγια για τα πακέτα που θα χρησιμοποιήσουμε
    2.1. τακτοποιημένος
    2.2. πίνακας δεδομένων
    2.3. Πάντα
  3. Εγκατάσταση πακέτων
  4. Τα δεδομένα φορτώνονται
  5. Δημιουργία πλαισίων δεδομένων
  6. Επιλέγοντας τις στήλες που χρειάζεστε
  7. Φιλτράρισμα σειρών
  8. Ομαδοποίηση και Συγκέντρωση
  9. Κάθετη ένωση πινάκων (UNION)
  10. Οριζόντια ένωση πινάκων (JOIN)
  11. Βασικές συναρτήσεις παραθύρου και υπολογισμένες στήλες
  12. Πίνακας αντιστοιχίας μεταξύ μεθόδων επεξεργασίας δεδομένων σε R και Python
  13. Συμπέρασμα
  14. Μια σύντομη έρευνα σχετικά με το πακέτο που χρησιμοποιείτε

Εάν ενδιαφέρεστε για ανάλυση δεδομένων, μπορείτε να βρείτε το δικό μου τηλεγράφημα и YouTube καναλιών. Το μεγαλύτερο μέρος του περιεχομένου του οποίου είναι αφιερωμένο στη γλώσσα R.

Κύριες συντακτικές διαφορές μεταξύ R και Python

Για να σας διευκολύνω να μεταβείτε από Python σε R ή αντίστροφα, θα δώσω μερικά βασικά σημεία που πρέπει να προσέξετε.

Πρόσβαση στις Λειτουργίες πακέτου

Μόλις φορτωθεί ένα πακέτο στο R, δεν χρειάζεται να καθορίσετε το όνομα του πακέτου για να αποκτήσετε πρόσβαση στις λειτουργίες του. Στις περισσότερες περιπτώσεις αυτό δεν είναι σύνηθες στο R, αλλά είναι αποδεκτό. Δεν χρειάζεται να εισαγάγετε καθόλου ένα πακέτο εάν χρειάζεστε μια από τις συναρτήσεις του στον κώδικά σας, αλλά απλώς καλέστε το καθορίζοντας το όνομα του πακέτου και το όνομα της συνάρτησης. Το διαχωριστικό μεταξύ των ονομάτων πακέτων και συναρτήσεων στο R είναι διπλή άνω και κάτω τελεία. package_name::function_name().

Στην Python, αντίθετα, θεωρείται κλασικό να καλούμε τις συναρτήσεις ενός πακέτου προσδιορίζοντας ρητά το όνομά του. Όταν γίνεται λήψη ενός πακέτου, του δίνεται συνήθως ένα συντομευμένο όνομα, π.χ. pandas συνήθως χρησιμοποιείται ψευδώνυμο pd. Η πρόσβαση σε μια συνάρτηση πακέτου γίνεται μέσω μιας τελείας package_name.function_name().

ΑΝΑΘΕΣΗ ΕΡΓΑΣΙΑΣ

Στο R, είναι σύνηθες να χρησιμοποιείτε ένα βέλος για να εκχωρήσετε μια τιμή σε ένα αντικείμενο. obj_name <- value, αν και επιτρέπεται ένα μεμονωμένο σύμβολο ίσον, το απλό σύμβολο ίσον στο R χρησιμοποιείται κυρίως για τη μεταβίβαση τιμών σε ορίσματα συνάρτησης.

Στην Python, η ανάθεση γίνεται αποκλειστικά με ένα μόνο σύμβολο ίσον obj_name = value.

Ευρετηρίαση

Υπάρχουν επίσης αρκετά σημαντικές διαφορές εδώ. Στο R, η ευρετηρίαση ξεκινά από ένα και περιλαμβάνει όλα τα καθορισμένα στοιχεία στο εύρος που προκύπτει,

Στην Python, η ευρετηρίαση ξεκινά από το μηδέν και η επιλεγμένη περιοχή δεν περιλαμβάνει το τελευταίο στοιχείο που καθορίζεται στο ευρετήριο. Σχεδιασμός λοιπόν x[i:j] στην Python δεν θα περιλαμβάνει το στοιχείο j.

Υπάρχουν επίσης διαφορές στον αρνητικό δείκτη, στον συμβολισμό R x[-1] θα επιστρέψει όλα τα στοιχεία του διανύσματος εκτός από το τελευταίο. Στην Python, μια παρόμοια σημείωση θα επιστρέψει μόνο το τελευταίο στοιχείο.

Μέθοδοι και OOP

Το R υλοποιεί το OOP με τον δικό του τρόπο, έγραψα για αυτό στο άρθρο "OOP στη γλώσσα R (μέρος 1): τάξεις S3". Σε γενικές γραμμές, η R είναι μια λειτουργική γλώσσα και τα πάντα σε αυτό είναι χτισμένα σε συναρτήσεις. Επομένως, για παράδειγμα, για χρήστες του Excel, μεταβείτε στο tydiverse θα είναι ευκολότερο από pandas. Αν και αυτή μπορεί να είναι η υποκειμενική μου άποψη.

Εν ολίγοις, τα αντικείμενα στο R δεν έχουν μεθόδους (αν μιλάμε για κλάσεις S3, αλλά υπάρχουν και άλλες υλοποιήσεις OOP που είναι πολύ λιγότερο κοινές). Υπάρχουν μόνο γενικευμένες συναρτήσεις που τις επεξεργάζονται διαφορετικά ανάλογα με την κλάση του αντικειμένου.

Σωληνώσεις

Ίσως αυτό είναι το όνομα για pandas Δεν θα είναι απολύτως σωστό, αλλά θα προσπαθήσω να εξηγήσω το νόημα.

Για να μην αποθηκεύσετε ενδιάμεσους υπολογισμούς και να μην δημιουργήσετε περιττά αντικείμενα στο εργασιακό περιβάλλον, μπορείτε να χρησιμοποιήσετε ένα είδος αγωγού. Εκείνοι. περάστε το αποτέλεσμα ενός υπολογισμού από τη μια συνάρτηση στην επόμενη και μην αποθηκεύσετε τα ενδιάμεσα αποτελέσματα.

Ας πάρουμε το ακόλουθο παράδειγμα κώδικα, όπου αποθηκεύουμε τους ενδιάμεσους υπολογισμούς σε ξεχωριστά αντικείμενα:

temp_object <- func1()
temp_object2 <- func2(temp_object )
obj <- func3(temp_object2 )

Πραγματοποιήσαμε διαδοχικά 3 πράξεις και το αποτέλεσμα της καθεμίας αποθηκεύτηκε σε ξεχωριστό αντικείμενο. Αλλά στην πραγματικότητα, δεν χρειαζόμαστε αυτά τα ενδιάμεσα αντικείμενα.

Ή ακόμα χειρότερα, αλλά πιο οικεία στους χρήστες του Excel.

obj  <- func3(func2(func1()))

Σε αυτήν την περίπτωση, δεν αποθηκεύσαμε τα ενδιάμεσα αποτελέσματα υπολογισμού, αλλά η ανάγνωση κώδικα με ένθετες συναρτήσεις είναι εξαιρετικά άβολη.

Θα εξετάσουμε διάφορες προσεγγίσεις για την επεξεργασία δεδομένων στο R, και εκτελούν παρόμοιες λειτουργίες με διαφορετικούς τρόπους.

Σωληνώσεις στη βιβλιοθήκη tidyverse υλοποιείται από τον φορέα εκμετάλλευσης %>%.

obj <- func1() %>% 
            func2() %>%
            func3()

Έτσι παίρνουμε το αποτέλεσμα της εργασίας func1() και περάστε το ως το πρώτο επιχείρημα σε func2(), τότε περνάμε το αποτέλεσμα αυτού του υπολογισμού ως πρώτο όρισμα func3(). Και στο τέλος, γράφουμε όλους τους υπολογισμούς που έγιναν στο αντικείμενο obj <-.

Όλα τα παραπάνω απεικονίζονται καλύτερα από τις λέξεις από αυτό το μιμίδιο:
Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσω

В data.table Οι αλυσίδες χρησιμοποιούνται με παρόμοιο τρόπο.

newDT <- DT[where, select|update|do, by][where, select|update|do, by][where, select|update|do, by]

Σε κάθε μία από τις αγκύλες μπορείτε να χρησιμοποιήσετε το αποτέλεσμα της προηγούμενης πράξης.

В pandas τέτοιες πράξεις χωρίζονται με μια τελεία.

obj = df.fun1().fun2().fun3()

Εκείνοι. παίρνουμε το τραπέζι μας df και χρησιμοποιήστε τη μέθοδό της fun1(), στη συνέχεια εφαρμόζουμε τη μέθοδο στο ληφθέν αποτέλεσμα fun2(), μετά fun3(). Το αποτέλεσμα που προκύπτει αποθηκεύεται σε ένα αντικείμενο obj .

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Οι δομές δεδομένων σε R και Python είναι παρόμοιες, αλλά έχουν διαφορετικά ονόματα.

Περιγραφή
Όνομα σε R
Όνομα σε Python/pandas

Δομή πίνακα
data.frame, data.table, tibble
Πλαίσιο δεδομένων

Μονοδιάστατη λίστα τιμών
Vector
Σειρά σε panda ή λίστα σε καθαρή Python

Μη πινακοειδής δομή πολλαπλών επιπέδων
Λίστα
Λεξικό (dict)

Θα δούμε μερικά άλλα χαρακτηριστικά και διαφορές στη σύνταξη παρακάτω.

Λίγα λόγια για τα πακέτα που θα χρησιμοποιήσουμε

Αρχικά, θα σας πω λίγα λόγια για τα πακέτα με τα οποία θα εξοικειωθείτε σε αυτό το άρθρο.

τακτοποιημένος

Официальный сайт: tidyverse.org
Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσω
Βιβλιοθήκη tidyverse γραμμένο από τον Hedley Wickham, Senior Research Scientist στο RStudio. tidyverse αποτελείται από ένα εντυπωσιακό σύνολο πακέτων που απλοποιούν την επεξεργασία δεδομένων, 5 από τα οποία περιλαμβάνονται στις 10 κορυφαίες λήψεις από το αποθετήριο CRAN.

Ο πυρήνας της βιβλιοθήκης αποτελείται από τα ακόλουθα πακέτα: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. Κάθε ένα από αυτά τα πακέτα στοχεύει στην επίλυση ενός συγκεκριμένου προβλήματος. Για παράδειγμα dplyr δημιουργήθηκε για χειρισμό δεδομένων, tidyr για να φέρετε τα δεδομένα σε μια τακτοποιημένη μορφή, stringr απλοποιεί την εργασία με χορδές και ggplot2 είναι ένα από τα πιο δημοφιλή εργαλεία οπτικοποίησης δεδομένων.

Το πλεονέκτημα tidyverse είναι η απλότητα και η ευανάγνωστη σύνταξη, η οποία είναι από πολλές απόψεις παρόμοια με τη γλώσσα ερωτημάτων SQL.

πίνακας δεδομένων

Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσωОфициальный сайт: r-datatable.com

Συγγραφέας data.table είναι ο Matt Dole του H2O.ai.

Η πρώτη κυκλοφορία της βιβλιοθήκης πραγματοποιήθηκε το 2006.

Η σύνταξη του πακέτου δεν είναι τόσο βολική όσο στο tidyverse και θυμίζει περισσότερο τα κλασικά πλαίσια δεδομένων σε R, αλλά ταυτόχρονα έχει επεκταθεί σημαντικά σε λειτουργικότητα.

Όλοι οι χειρισμοί με τον πίνακα σε αυτό το πακέτο περιγράφονται σε αγκύλες και αν μεταφράσετε τη σύνταξη data.table στην SQL, λαμβάνετε κάτι σαν αυτό: data.table[ WHERE, SELECT, GROUP BY ]

Η δύναμη αυτού του πακέτου είναι η ταχύτητα επεξεργασίας μεγάλων ποσοτήτων δεδομένων.

Πάντα

Официальный сайт: pandas.pydata.org Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσω

Το όνομα της βιβλιοθήκης προέρχεται από τον οικονομετρικό όρο «δεδομένα πίνακα», που χρησιμοποιείται για να περιγράψει πολυδιάστατα δομημένα σύνολα πληροφοριών.

Συγγραφέας pandas είναι ο Αμερικανός Wes McKinney.

Όταν πρόκειται για ανάλυση δεδομένων σε Python, ίσο pandas Οχι. Ένα πολύ πολυλειτουργικό πακέτο υψηλού επιπέδου που σας επιτρέπει να πραγματοποιείτε οποιονδήποτε χειρισμό δεδομένων, από τη φόρτωση δεδομένων από οποιεσδήποτε πηγές έως την οπτικοποίηση τους.

Εγκατάσταση πρόσθετων πακέτων

Τα πακέτα που αναφέρονται σε αυτό το άρθρο δεν περιλαμβάνονται στις βασικές διανομές R και Python. Αν και υπάρχει μια μικρή προειδοποίηση, εάν εγκαταστήσατε τη διανομή Anaconda, τότε εγκαταστήστε επιπλέον pandas δεν απαιτείται.

Εγκατάσταση πακέτων στο R

Εάν έχετε ανοίξει το περιβάλλον ανάπτυξης RStudio τουλάχιστον μία φορά, πιθανότατα γνωρίζετε ήδη πώς να εγκαταστήσετε το απαιτούμενο πακέτο στο R. Για να εγκαταστήσετε πακέτα, χρησιμοποιήστε την τυπική εντολή install.packages() τρέχοντάς το απευθείας στο ίδιο το R.

# установка пакетов
install.packages("vroom")
install.packages("readr")
install.packages("dplyr")
install.packages("data.table")

Μετά την εγκατάσταση, τα πακέτα πρέπει να συνδεθούν, για την οποία στις περισσότερες περιπτώσεις χρησιμοποιείται η εντολή library().

# подключение или импорт пакетов в рабочее окружение
library(vroom)
library(readr)
library(dplyr)
library(data.table)

Εγκατάσταση πακέτων σε Python

Έτσι, αν έχετε εγκαταστήσει καθαρή Python, τότε pandas πρέπει να το εγκαταστήσετε χειροκίνητα. Ανοίξτε μια γραμμή εντολών ή τερματικό, ανάλογα με το λειτουργικό σας σύστημα και πληκτρολογήστε την ακόλουθη εντολή.

pip install pandas

Στη συνέχεια επιστρέφουμε στην Python και εισάγουμε το εγκατεστημένο πακέτο με την εντολή import.

import pandas as pd

Τα δεδομένα φορτώνονται

Η εξόρυξη δεδομένων είναι ένα από τα πιο σημαντικά βήματα στην ανάλυση δεδομένων. Τόσο η Python όσο και η R, εάν το επιθυμείτε, σας παρέχουν εκτεταμένες ευκαιρίες να αποκτήσετε δεδομένα από οποιεσδήποτε πηγές: τοπικά αρχεία, αρχεία από το Διαδίκτυο, ιστότοπους, κάθε είδους βάσεις δεδομένων.

Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσω

Σε όλο το άρθρο θα χρησιμοποιήσουμε πολλά σύνολα δεδομένων:

  1. Δύο λήψεις από το Google Analytics.
  2. Σύνολο δεδομένων επιβατών Titanic.

Όλα τα δεδομένα είναι στα δικά μου GitHub με τη μορφή αρχείων csv και tsv. Από πού θα τα ζητήσουμε;

Φόρτωση δεδομένων στο R: tidyverse, vroom, readr

Για να φορτώσετε δεδομένα σε μια βιβλιοθήκη tidyverse Υπάρχουν δύο πακέτα: vroom, readr. vroom πιο μοντέρνο, αλλά στο μέλλον τα πακέτα μπορεί να συνδυαστούν.

Παράθεση από επίσημη τεκμηρίωση vroom.

vroom εναντίον αναγνώστη
Τι σημαίνει η απελευθέρωση του vroom σημαίνει για readr? Προς το παρόν σκοπεύουμε να αφήσουμε τα δύο πακέτα να εξελιχθούν χωριστά, αλλά πιθανότατα θα ενώσουμε τα πακέτα στο μέλλον. Ένα μειονέκτημα της τεμπέλης ανάγνωσης του vroom είναι ότι ορισμένα προβλήματα δεδομένων δεν μπορούν να αναφερθούν εκ των προτέρων, οπότε ο καλύτερος τρόπος για να τα ενοποιήσετε απαιτεί λίγη σκέψη.

vroom εναντίον αναγνώστη
Τι σημαίνει απελευθέρωση; vroom για readr? Προς το παρόν σχεδιάζουμε να αναπτύξουμε και τα δύο πακέτα ξεχωριστά, αλλά μάλλον θα τα συνδυάσουμε στο μέλλον. Ένα από τα μειονεκτήματα του τεμπελικού διαβάσματος vroom είναι ότι ορισμένα προβλήματα με τα δεδομένα δεν μπορούν να αναφερθούν εκ των προτέρων, επομένως πρέπει να σκεφτείτε πώς να τα συνδυάσετε καλύτερα.

Σε αυτό το άρθρο θα εξετάσουμε και τα δύο πακέτα φόρτωσης δεδομένων:

Φόρτωση δεδομένων στο πακέτο R: vroom

# install.packages("vroom")
library(vroom)

# Чтение данных
## vroom
ga_nov  <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec  <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")

Φόρτωση δεδομένων στο R: reader

# install.packages("readr")
library(readr)

# Чтение данных
## readr
ga_nov  <- read_tsv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec  <- read_tsv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")

Στη συσκευασία vroom, ανεξάρτητα από τη μορφή δεδομένων csv / tsv, η φόρτωση πραγματοποιείται από τη συνάρτηση με το ίδιο όνομα vroom(), στη συσκευασία readr χρησιμοποιούμε διαφορετική λειτουργία για κάθε μορφή read_tsv() и read_csv().

Φόρτωση δεδομένων στο R: data.table

В data.table υπάρχει μια λειτουργία για τη φόρτωση δεδομένων fread().

Φόρτωση δεδομένων στο πακέτο R: data.table

# install.packages("data.table")
library(data.table)

## data.table
ga_nov  <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec  <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")

Φόρτωση δεδομένων σε Python: pandas

Εάν συγκρίνουμε με πακέτα R, τότε σε αυτήν την περίπτωση η σύνταξη είναι πιο κοντά pandas θα readr, επειδή pandas μπορεί να ζητήσει δεδομένα από οπουδήποτε και υπάρχει μια ολόκληρη οικογένεια λειτουργιών σε αυτό το πακέτο read_*().

  • read_csv()
  • read_excel()
  • read_sql()
  • read_json()
  • read_html()

Και πολλές άλλες λειτουργίες που έχουν σχεδιαστεί για την ανάγνωση δεδομένων από διάφορες μορφές. Αλλά για τους σκοπούς μας είναι αρκετό read_table() ή read_csv() χρησιμοποιώντας όρισμα Σεπτέμβριος για να καθορίσετε το διαχωριστικό στηλών.

Φόρτωση δεδομένων σε Python: pandas

import pandas as pd

ga_nov  = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/ga_nowember.csv", sep = "t")
ga_dec  = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/ga_december.csv", sep = "t")
titanic = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/titanic.csv")

Δημιουργία πλαισίων δεδομένων

Τραπέζι τιτανικός, που φορτώσαμε, υπάρχει χωράφι Φύλο, το οποίο αποθηκεύει το αναγνωριστικό φύλου του επιβάτη.

Αλλά για μια πιο βολική παρουσίαση των δεδομένων όσον αφορά το φύλο των επιβατών, θα πρέπει να χρησιμοποιήσετε το όνομα και όχι τον κωδικό φύλου.

Για να γίνει αυτό, θα δημιουργήσουμε έναν μικρό κατάλογο, έναν πίνακα στον οποίο θα υπάρχουν μόνο 2 στήλες (κωδικός και όνομα φύλου) και 2 σειρές, αντίστοιχα.

Δημιουργία πλαισίου δεδομένων σε R: tidyverse, dplyr

Στο παρακάτω παράδειγμα κώδικα, δημιουργούμε το επιθυμητό πλαίσιο δεδομένων χρησιμοποιώντας τη συνάρτηση tibble() .

Δημιουργία πλαισίου δεδομένων σε R: dplyr

## dplyr
### создаём справочник
gender <- tibble(id = c(1, 2),
                 gender = c("female", "male"))

Δημιουργία πλαισίου δεδομένων στο R: data.table

Δημιουργία πλαισίου δεδομένων στο R: data.table

## data.table
### создаём справочник
gender <- data.table(id = c(1, 2),
                    gender = c("female", "male"))

Δημιουργία πλαισίου δεδομένων στην Python: pandas

В pandas Η δημιουργία πλαισίων πραγματοποιείται σε διάφορα στάδια, πρώτα δημιουργούμε ένα λεξικό και μετά μετατρέπουμε το λεξικό σε πλαίσιο δεδομένων.

Δημιουργία πλαισίου δεδομένων στην Python: pandas

# создаём дата фрейм
gender_dict = {'id': [1, 2],
               'gender': ["female", "male"]}
# преобразуем словарь в датафрейм
gender = pd.DataFrame.from_dict(gender_dict)

Επιλογή στηλών

Οι πίνακες με τους οποίους εργάζεστε μπορεί να περιέχουν δεκάδες ή και εκατοντάδες στήλες δεδομένων. Αλλά για να πραγματοποιήσετε ανάλυση, κατά κανόνα, δεν χρειάζεστε όλες τις στήλες που είναι διαθέσιμες στον πίνακα προέλευσης.

Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσω

Επομένως, μία από τις πρώτες λειτουργίες που θα εκτελέσετε με τον πίνακα προέλευσης είναι να τον καθαρίσετε από περιττές πληροφορίες και να ελευθερώσετε τη μνήμη που καταλαμβάνουν αυτές οι πληροφορίες.

Επιλογή στηλών σε R: tidyverse, dplyr

σύνταξη dplyr είναι πολύ παρόμοια με τη γλώσσα ερωτημάτων SQL, εάν είστε εξοικειωμένοι με αυτήν, θα κατακτήσετε γρήγορα αυτό το πακέτο.

Για να επιλέξετε στήλες, χρησιμοποιήστε τη συνάρτηση select().

Ακολουθούν παραδείγματα κώδικα με τους οποίους μπορείτε να επιλέξετε στήλες με τους ακόλουθους τρόπους:

  • Αναφέροντας τα ονόματα των απαιτούμενων στηλών
  • Ανατρέξτε στα ονόματα στηλών χρησιμοποιώντας κανονικές εκφράσεις
  • Κατά τύπο δεδομένων ή οποιαδήποτε άλλη ιδιότητα των δεδομένων που περιέχονται στη στήλη

Επιλογή στηλών σε R: dplyr

# Выбор нужных столбцов
## dplyr
### выбрать по названию столбцов
select(ga_nov, date, source, sessions)
### исключь по названию столбцов
select(ga_nov, -medium, -bounces)
### выбрать по регулярному выражению, стобцы имена которых заканчиваются на s
select(ga_nov, matches("s$"))
### выбрать по условию, выбираем только целочисленные столбцы
select_if(ga_nov, is.integer)

Επιλογή στηλών στο R: data.table

Οι ίδιες λειτουργίες σε data.table εκτελούνται ελαφρώς διαφορετικά, στην αρχή του άρθρου παρείχα μια περιγραφή του ποια ορίσματα βρίσκονται μέσα σε αγκύλες data.table.

DT[i,j,by]

Πού:
i - όπου, δηλ. φιλτράρισμα κατά σειρές
j - επιλέξτε|ενημέρωση|κάνω, δηλ. επιλογή στηλών και μετατροπή τους
κατά - ομαδοποίηση δεδομένων

Επιλογή στηλών στο R: data.table

## data.table
### выбрать по названию столбцов
ga_nov[ , .(date, source, sessions) ]
### исключь по названию столбцов
ga_nov[ , .SD, .SDcols = ! names(ga_nov) %like% "medium|bounces" ]
### выбрать по регулярному выражению
ga_nov[, .SD, .SDcols = patterns("s$")]

Μεταβλητή .SD σας επιτρέπει να έχετε πρόσβαση σε όλες τις στήλες και .SDcols φιλτράρετε τις απαιτούμενες στήλες χρησιμοποιώντας κανονικές εκφράσεις ή άλλες συναρτήσεις για να φιλτράρετε τα ονόματα των στηλών που χρειάζεστε.

Επιλογή στηλών σε Python, pandas

Για να επιλέξετε στήλες με όνομα στο pandas αρκεί να παράσχετε μια λίστα με τα ονόματά τους. Και για να επιλέξετε ή να εξαιρέσετε στήλες με το όνομα χρησιμοποιώντας κανονικές εκφράσεις, πρέπει να χρησιμοποιήσετε τις συναρτήσεις drop() и filter(), και επιχείρημα άξονας = 1, με το οποίο υποδεικνύετε ότι είναι απαραίτητο να επεξεργαστείτε στήλες αντί για γραμμές.

Για να επιλέξετε ένα πεδίο ανά τύπο δεδομένων, χρησιμοποιήστε τη συνάρτηση select_dtypes(), και σε επιχειρήματα περιλαμβάνουν ή αποκλείουν περάστε μια λίστα τύπων δεδομένων που αντιστοιχούν στα πεδία που πρέπει να επιλέξετε.

Επιλογή στηλών στην Python: pandas

# Выбор полей по названию
ga_nov[['date', 'source', 'sessions']]
# Исключить по названию
ga_nov.drop(['medium', 'bounces'], axis=1)
# Выбрать по регулярному выражению
ga_nov.filter(regex="s$", axis=1)
# Выбрать числовые поля
ga_nov.select_dtypes(include=['number'])
# Выбрать текстовые поля
ga_nov.select_dtypes(include=['object'])

Φιλτράρισμα σειρών

Για παράδειγμα, ο πίνακας προέλευσης μπορεί να περιέχει δεδομένα πολλών ετών, αλλά χρειάζεται να αναλύσετε μόνο τον τελευταίο μήνα. Και πάλι, οι επιπλέον γραμμές θα επιβραδύνουν τη διαδικασία επεξεργασίας δεδομένων και θα φράξουν τη μνήμη του υπολογιστή.

Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσω

Φιλτράρισμα σειρών σε R: tydyverse, dplyr

В dplyr η συνάρτηση χρησιμοποιείται για το φιλτράρισμα σειρών filter(). Λαμβάνει ένα πλαίσιο δεδομένων ως πρώτο όρισμα και, στη συνέχεια, παραθέτεις τις συνθήκες φιλτραρίσματος.

Όταν γράφετε λογικές εκφράσεις για να φιλτράρετε έναν πίνακα, σε αυτήν την περίπτωση, καθορίστε τα ονόματα των στηλών χωρίς εισαγωγικά και χωρίς να δηλώσετε το όνομα του πίνακα.

Όταν χρησιμοποιείτε πολλές λογικές εκφράσεις για φιλτράρισμα, χρησιμοποιήστε τους ακόλουθους τελεστές:

  • & ή κόμμα - λογικό ΚΑΙ
  • | - λογικό Ή

Φιλτράρισμα σειρών σε R: dplyr

# фильтрация строк
## dplyr
### фильтрация строк по одному условию
filter(ga_nov, source == "google")
### фильтр по двум условиям соединённым логическим и
filter(ga_nov, source == "google" & sessions >= 10)
### фильтр по двум условиям соединённым логическим или
filter(ga_nov, source == "google" | sessions >= 10)

Φιλτράρισμα σειρών στο R: data.table

Όπως έγραψα ήδη παραπάνω, στο data.table Η σύνταξη μετατροπής δεδομένων περικλείεται σε αγκύλες.

DT[i,j,by]

Πού:
i - όπου, δηλ. φιλτράρισμα κατά σειρές
j - επιλέξτε|ενημέρωση|κάνω, δηλ. επιλογή στηλών και μετατροπή τους
κατά - ομαδοποίηση δεδομένων

Το όρισμα χρησιμοποιείται για το φιλτράρισμα σειρών i, που έχει την πρώτη θέση σε αγκύλες.

Η πρόσβαση στις στήλες γίνεται με λογικές εκφράσεις χωρίς εισαγωγικά και χωρίς να προσδιορίζεται το όνομα του πίνακα.

Οι λογικές εκφράσεις σχετίζονται μεταξύ τους με τον ίδιο τρόπο όπως και στο dplyr μέσω των τελεστών & και |.

Φιλτράρισμα σειρών στο R: data.table

## data.table
### фильтрация строк по одному условию
ga_nov[source == "google"]
### фильтр по двум условиям соединённым логическим и
ga_nov[source == "google" & sessions >= 10]
### фильтр по двум условиям соединённым логическим или
ga_nov[source == "google" | sessions >= 10]

Φιλτράρισμα συμβολοσειρών στην Python: pandas

Φιλτράρισμα κατά σειρές μέσα pandas παρόμοιο με το φιλτράρισμα data.table, και γίνεται σε αγκύλες.

Σε αυτήν την περίπτωση, η πρόσβαση στις στήλες πραγματοποιείται αναγκαστικά με την ένδειξη του ονόματος του πλαισίου δεδομένων· τότε το όνομα της στήλης μπορεί επίσης να υποδειχθεί σε εισαγωγικά σε αγκύλες (παράδειγμα df['col_name']), ή χωρίς εισαγωγικά μετά την περίοδο (παράδειγμα df.col_name).

Εάν χρειάζεται να φιλτράρετε ένα πλαίσιο δεδομένων με πολλές συνθήκες, κάθε συνθήκη πρέπει να τοποθετηθεί σε παρένθεση. Οι λογικές συνθήκες συνδέονται μεταξύ τους από χειριστές & и |.

Φιλτράρισμα συμβολοσειρών στην Python: pandas

# Фильтрация строк таблицы
### фильтрация строк по одному условию
ga_nov[ ga_nov['source'] == "google" ]
### фильтр по двум условиям соединённым логическим и
ga_nov[(ga_nov['source'] == "google") & (ga_nov['sessions'] >= 10)]
### фильтр по двум условиям соединённым логическим или
ga_nov[(ga_nov['source'] == "google") | (ga_nov['sessions'] >= 10)]

Ομαδοποίηση και συγκέντρωση δεδομένων

Μία από τις πιο συχνά χρησιμοποιούμενες λειτουργίες στην ανάλυση δεδομένων είναι η ομαδοποίηση και η συγκέντρωση.

Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσω

Η σύνταξη για την εκτέλεση αυτών των λειτουργιών είναι διάσπαρτη σε όλα τα πακέτα που εξετάζουμε.

Σε αυτήν την περίπτωση, θα πάρουμε ως παράδειγμα ένα πλαίσιο δεδομένων τιτανικός, και υπολογίστε τον αριθμό και το μέσο κόστος των εισιτηρίων ανάλογα με την κατηγορία καμπίνας.

Ομαδοποίηση και συνάθροιση δεδομένων σε R: tidyverse, dplyr

В dplyr η συνάρτηση χρησιμοποιείται για ομαδοποίηση group_by(), και για συνάθροιση summarise(). Στην πραγματικότητα, dplyr υπάρχει μια ολόκληρη οικογένεια λειτουργιών summarise_*(), αλλά ο σκοπός αυτού του άρθρου είναι να συγκρίνει τη βασική σύνταξη, επομένως δεν θα πάμε σε τέτοια ζούγκλα.

Βασικές συναρτήσεις συγκέντρωσης:

  • sum() — άθροιση
  • min() / max() – ελάχιστη και μέγιστη τιμή
  • mean() - μέση τιμή
  • median() — διάμεσος
  • length() - ποσότητα

Ομαδοποίηση και συνάθροιση σε R: dplyr

## dplyr
### группировка и агрегация строк
group_by(titanic, Pclass) %>%
  summarise(passangers = length(PassengerId),
            avg_price  = mean(Fare))

Σε λειτουργία group_by() περάσαμε τον πίνακα ως πρώτο επιχείρημα τιτανικός, και μετά υποδείχθηκε το πεδίο Pclass, με την οποία θα ομαδοποιήσουμε το τραπέζι μας. Το αποτέλεσμα αυτής της λειτουργίας με χρήση του χειριστή %>% μεταβιβάστηκε ως το πρώτο όρισμα στη συνάρτηση summarise()και πρόσθεσε 2 ακόμη πεδία: επιβάτες и μέση_τιμή. Στην πρώτη, χρησιμοποιώντας τη συνάρτηση length() υπολόγισε τον αριθμό των εισιτηρίων και στο δεύτερο χρησιμοποιώντας τη συνάρτηση mean() έλαβε τη μέση τιμή εισιτηρίου.

Ομαδοποίηση και συνάθροιση δεδομένων σε R: data.table

В data.table το όρισμα χρησιμοποιείται για τη συγκέντρωση j που έχει δεύτερη θέση σε αγκύλες, και για ομαδοποίηση by ή keyby, που κατέχουν την τρίτη θέση.

Ο κατάλογος των συναρτήσεων συγκέντρωσης σε αυτήν την περίπτωση είναι πανομοιότυπος με αυτόν που περιγράφεται στο dplyr, επειδή Αυτές είναι συναρτήσεις από τη βασική σύνταξη R.

Ομαδοποίηση και συγκέντρωση σε R: δεδομένα.πίνακας

## data.table
### фильтрация строк по одному условию
titanic[, .(passangers = length(PassengerId),
            avg_price  = mean(Fare)),
        by = Pclass]

Ομαδοποίηση και συνάθροιση δεδομένων σε Python: pandas

Ομαδοποίηση σε pandas παρόμοιο με dplyr, αλλά η συγκέντρωση δεν είναι παρόμοια με dplyr καθόλου data.table.

Για ομαδοποίηση, χρησιμοποιήστε τη μέθοδο groupby(), στην οποία πρέπει να περάσετε μια λίστα στηλών βάσει των οποίων θα ομαδοποιηθεί το πλαίσιο δεδομένων.

Για συνάθροιση μπορείτε να χρησιμοποιήσετε τη μέθοδο agg()που δέχεται λεξικό. Τα πλήκτρα λεξικού είναι οι στήλες στις οποίες θα εφαρμόσετε τις συναρτήσεις συγκέντρωσης και οι τιμές είναι τα ονόματα των συναρτήσεων συγκέντρωσης.

Λειτουργίες συγκέντρωσης:

  • sum() — άθροιση
  • min() / max() – ελάχιστη και μέγιστη τιμή
  • mean() - μέση τιμή
  • median() — διάμεσος
  • count() - ποσότητα

Λειτουργία reset_index() στο παρακάτω παράδειγμα χρησιμοποιείται για την επαναφορά ένθετων ευρετηρίων που pandas προεπιλογή μετά τη συγκέντρωση δεδομένων.

Σύμβολο σας επιτρέπει να μεταβείτε στην επόμενη γραμμή.

Ομαδοποίηση και συνάθροιση στην Python: pandas

# группировка и агрегация данных
titanic.groupby(["Pclass"]).
    agg({'PassengerId': 'count', 'Fare': 'mean'}).
        reset_index()

Κάθετη ένωση τραπεζιών

Μια λειτουργία κατά την οποία συνδέετε δύο ή περισσότερους πίνακες της ίδιας δομής. Τα δεδομένα που φορτώσαμε περιέχουν πίνακες ga_nov и ga_dec. Αυτοί οι πίνακες είναι πανομοιότυποι στη δομή, δηλ. έχουν τις ίδιες στήλες και τους τύπους δεδομένων σε αυτές τις στήλες.

Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσω

Αυτή είναι μια μεταφόρτωση από το Google Analytics για τον μήνα Νοέμβριο και Δεκέμβριο, σε αυτήν την ενότητα θα συνδυάσουμε αυτά τα δεδομένα σε έναν πίνακα.

Κάθετη ένωση πινάκων σε R: tidyverse, dplyr

В dplyr Μπορείτε να συνδυάσετε 2 πίνακες σε έναν χρησιμοποιώντας τη συνάρτηση bind_rows(), περνώντας πίνακες ως επιχειρήματά του.

Φιλτράρισμα σειρών σε R: dplyr

# Вертикальное объединение таблиц
## dplyr
bind_rows(ga_nov, ga_dec)

Κάθετη ένωση πινάκων στο R: data.table

Δεν είναι επίσης τίποτα περίπλοκο, ας το χρησιμοποιήσουμε rbind().

Φιλτράρισμα σειρών στο R: data.table

## data.table
rbind(ga_nov, ga_dec)

Κάθετη ένωση πινάκων στην Python: pandas

В pandas η συνάρτηση χρησιμοποιείται για την ένωση πινάκων concat(), στο οποίο πρέπει να περάσετε μια λίστα πλαισίων για να τα συνδυάσετε.

Φιλτράρισμα συμβολοσειρών στην Python: pandas

# вертикальное объединение таблиц
pd.concat([ga_nov, ga_dec])

Οριζόντια ένωση τραπεζιών

Μια λειτουργία κατά την οποία στήλες από το δεύτερο προστίθενται στον πρώτο πίνακα με κλειδί. Χρησιμοποιείται συχνά όταν εμπλουτίζεται ένας πίνακας δεδομένων (για παράδειγμα, ένας πίνακας με δεδομένα πωλήσεων) με ορισμένα δεδομένα αναφοράς (για παράδειγμα, το κόστος ενός προϊόντος).

Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσω

Υπάρχουν διάφοροι τύποι ενώσεων:

Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσω

Στον πίνακα που φορτώθηκε προηγουμένως τιτανικός έχουμε στήλη Φύλο, που αντιστοιχεί στον κωδικό φύλου του επιβάτη:

1 - θηλυκό
2 - αρσενικό

Επίσης, δημιουργήσαμε πίνακα - βιβλίο αναφοράς των δύο φύλων. Για πιο βολική παρουσίαση δεδομένων σχετικά με το φύλο των επιβατών, πρέπει να προσθέσουμε το όνομα του φύλου από τον κατάλογο των δύο φύλων στο τραπέζι τιτανικός.

Οριζόντια ένωση τραπεζιού σε R: tidyverse, dplyr

В dplyr Υπάρχει μια ολόκληρη οικογένεια λειτουργιών για οριζόντια σύνδεση:

  • inner_join()
  • left_join()
  • right_join()
  • full_join()
  • semi_join()
  • nest_join()
  • anti_join()

Το πιο συχνά χρησιμοποιούμενο στο ιατρείο μου είναι left_join().

Ως τα δύο πρώτα ορίσματα, οι συναρτήσεις που αναφέρονται παραπάνω χρειάζονται δύο πίνακες για να ενωθούν και ως τρίτο όρισμα by πρέπει να καθορίσετε τις στήλες που θα ενώσετε.

Οριζόντια ένωση πίνακα σε R: dplyr

# объединяем таблицы
left_join(titanic, gender,
          by = c("Sex" = "id"))

Οριζόντια ένωση πινάκων στο R: data.table

В data.table Πρέπει να ενώσετε πίνακες με πλήκτρο χρησιμοποιώντας τη συνάρτηση merge().

Λειτουργία ορίσματα για merge() στο data.table

  • x, y — Πίνακες για ένωση
  • από — Στήλη που είναι το κλειδί για ένταξη εάν έχει το ίδιο όνομα και στους δύο πίνακες
  • by.x, by.y — Ονόματα στηλών προς συγχώνευση, εάν έχουν διαφορετικά ονόματα στους πίνακες
  • all, all.x, all.y — Τύπος ένωσης, all θα επιστρέψει όλες τις σειρές και από τους δύο πίνακες, το all.x αντιστοιχεί στη λειτουργία LEFT JOIN (θα αφήσει όλες τις σειρές του πρώτου πίνακα), all.y — αντιστοιχεί στο Λειτουργία RIGHT JOIN (θα αφήσει όλες τις σειρές του δεύτερου πίνακα ).

Οριζόντια ένωση πινάκων στο R: data.table

# объединяем таблицы
merge(titanic, gender, by.x = "Sex", by.y = "id", all.x = T)

Οριζόντια ένωση τραπεζιού στην Python: pandas

Όπως επίσης και σε data.tableΣε pandas η συνάρτηση χρησιμοποιείται για την ένωση πινάκων merge().

Ορίσματα της συνάρτησης merge() στα panda

  • πώς — Τύπος σύνδεσης: αριστερά, δεξιά, εξωτερική, εσωτερική
  • on — Στήλη που είναι κλειδί εάν έχει το ίδιο όνομα και στους δύο πίνακες
  • left_on, right_on — Ονόματα στηλών κλειδιών, εάν έχουν διαφορετικά ονόματα σε πίνακες

Οριζόντια ένωση τραπεζιού στην Python: pandas

# объединяем по ключу
titanic.merge(gender, how = "left", left_on = "Sex", right_on = "id")

Βασικές συναρτήσεις παραθύρου και υπολογισμένες στήλες

Οι συναρτήσεις παραθύρου είναι παρόμοιες στη σημασία με τις συναρτήσεις συνάθροισης και χρησιμοποιούνται επίσης συχνά στην ανάλυση δεδομένων. Αλλά σε αντίθεση με τις συναρτήσεις συνάθροισης, οι συναρτήσεις παραθύρου δεν αλλάζουν τον αριθμό των σειρών του εξερχόμενου πλαισίου δεδομένων.

Ποια γλώσσα να επιλέξετε για εργασία με δεδομένα - R ή Python; Και τα δυο! Μετανάστευση από τα πάντα στο τακτοποιημένο και data.table και πίσω

Ουσιαστικά, χρησιμοποιώντας τη συνάρτηση παραθύρου, χωρίζουμε το εισερχόμενο πλαίσιο δεδομένων σε μέρη σύμφωνα με κάποιο κριτήριο, π.χ. με την τιμή ενός πεδίου ή πολλών πεδίων. Και πραγματοποιούμε αριθμητικές πράξεις σε κάθε παράθυρο. Το αποτέλεσμα αυτών των πράξεων θα επιστραφεί σε κάθε γραμμή, δηλ. χωρίς να αλλάξει ο συνολικός αριθμός σειρών στον πίνακα.

Για παράδειγμα, ας πάρουμε τον πίνακα τιτανικός. Μπορούμε να υπολογίσουμε τι ποσοστό ήταν το κόστος κάθε εισιτηρίου στην κατηγορία καμπίνας του.

Για να γίνει αυτό, πρέπει να λάβουμε σε κάθε γραμμή το συνολικό κόστος ενός εισιτηρίου για την τρέχουσα κατηγορία καμπίνας στην οποία ανήκει το εισιτήριο σε αυτήν τη γραμμή και, στη συνέχεια, να διαιρέσουμε το κόστος κάθε εισιτηρίου με το συνολικό κόστος όλων των εισιτηρίων της ίδιας κατηγορίας καμπίνας .

Λειτουργίες παραθύρου σε R: tidyverse, dplyr

Για να προσθέσετε νέες στήλες, χωρίς τη χρήση ομαδοποίησης σειρών, στο dplyr εξυπηρετεί τη λειτουργία mutate().

Μπορείτε να λύσετε το πρόβλημα που περιγράφεται παραπάνω ομαδοποιώντας τα δεδομένα ανά πεδίο Pclass και άθροιση του πεδίου σε νέα στήλη Να Κάνω. Στη συνέχεια, καταργήστε την ομαδοποίηση του πίνακα και διαιρέστε τις τιμές των πεδίων Να Κάνω σε αυτό που συνέβη στο προηγούμενο βήμα.

Λειτουργίες παραθύρου σε R: dplyr

group_by(titanic, Pclass) %>%
  mutate(Pclass_cost = sum(Fare)) %>%
  ungroup() %>%
  mutate(ticket_fare_rate = Fare / Pclass_cost)

Συναρτήσεις παραθύρου στο R: data.table

Ο αλγόριθμος λύσης παραμένει ο ίδιος όπως στο dplyr, πρέπει να χωρίσουμε τον πίνακα σε παράθυρα ανά πεδίο Pclass. Πληκτρολογήστε σε μια νέα στήλη το ποσό για την ομάδα που αντιστοιχεί σε κάθε σειρά και προσθέστε μια στήλη στην οποία υπολογίζουμε το μερίδιο του κόστους κάθε εισιτηρίου στην ομάδα του.

Για να προσθέσετε νέες στήλες στο data.table παρών χειριστή :=. Παρακάτω είναι ένα παράδειγμα επίλυσης ενός προβλήματος χρησιμοποιώντας το πακέτο data.table

Συναρτήσεις παραθύρου στο R: data.table

titanic[,c("Pclass_cost","ticket_fare_rate") := .(sum(Fare), Fare / Pclass_cost), 
        by = Pclass]

Συναρτήσεις παραθύρου στην Python: pandas

Ένας τρόπος για να προσθέσετε μια νέα στήλη pandas - χρησιμοποιήστε τη λειτουργία assign(). Για να συνοψίσουμε το κόστος των εισιτηρίων ανά κατηγορία καμπίνας, χωρίς να ομαδοποιήσουμε σειρές, θα χρησιμοποιήσουμε τη συνάρτηση transform().

Παρακάτω είναι ένα παράδειγμα λύσης στην οποία προσθέτουμε στον πίνακα τιτανικός τις ίδιες 2 στήλες.

Συναρτήσεις παραθύρου στην Python: pandas

titanic.assign(Pclass_cost      =  titanic.groupby('Pclass').Fare.transform(sum),
               ticket_fare_rate = lambda x: x['Fare'] / x['Pclass_cost'])

Πίνακας αντιστοιχίας συναρτήσεων και μεθόδων

Παρακάτω είναι ένας πίνακας αντιστοιχίας μεταξύ μεθόδων για την εκτέλεση διαφόρων πράξεων με δεδομένα στα πακέτα που εξετάσαμε.

Περιγραφή
τακτοποιημένος
πίνακας δεδομένων
Πάντα

Τα δεδομένα φορτώνονται
vroom()/ readr::read_csv() / readr::read_tsv()
fread()
read_csv()

Δημιουργία πλαισίων δεδομένων
tibble()
data.table()
dict() + from_dict()

Επιλογή στηλών
select()
διαφωνία j, δεύτερη θέση σε αγκύλες
περνάμε τη λίστα των απαιτούμενων στηλών σε αγκύλες / drop() / filter() / select_dtypes()

Φιλτράρισμα σειρών
filter()
διαφωνία i, πρώτη θέση σε αγκύλες
Παραθέτουμε τις συνθήκες φιλτραρίσματος σε αγκύλες / filter()

Ομαδοποίηση και Συγκέντρωση
group_by() + summarise()
επιχειρήματα j + by
groupby() + agg()

Κάθετη ένωση πινάκων (UNION)
bind_rows()
rbind()
concat()

Οριζόντια ένωση πινάκων (JOIN)
left_join() / *_join()
merge()
merge()

Βασικές λειτουργίες παραθύρου και προσθήκη υπολογιζόμενων στηλών
group_by() + mutate()
διαφωνία j χρησιμοποιώντας τον χειριστή := + επιχείρημα by
transform() + assign()

Συμπέρασμα

Ίσως στο άρθρο δεν περιέγραψα τις πιο βέλτιστες εφαρμογές επεξεργασίας δεδομένων, οπότε θα χαρώ αν διορθώσετε τα λάθη μου στα σχόλια ή απλώς συμπληρώσετε τις πληροφορίες που δίνονται στο άρθρο με άλλες τεχνικές εργασίας με δεδομένα στο R / Python.

Όπως έγραψα παραπάνω, ο σκοπός του άρθρου δεν ήταν να επιβάλει τη γνώμη κάποιου για το ποια γλώσσα είναι καλύτερη, αλλά να απλοποιήσει την ευκαιρία να μάθει κανείς και τις δύο γλώσσες ή, αν χρειαστεί, να μεταναστεύσει μεταξύ τους.

Αν σας άρεσε το άρθρο, θα χαρώ να έχω νέους συνδρομητές στο δικό μου YouTube и τηλεγράφημα κανάλια.

Опрос

Ποιο από τα παρακάτω πακέτα χρησιμοποιείτε στην εργασία σας;

Στα σχόλια μπορείτε να γράψετε τον λόγο της επιλογής σας.

Μόνο εγγεγραμμένοι χρήστες μπορούν να συμμετάσχουν στην έρευνα. Συνδεθείτε, Σας παρακαλούμε.

Ποιο πακέτο επεξεργασίας δεδομένων χρησιμοποιείτε (μπορείτε να επιλέξετε πολλές επιλογές)

  • 45,2%τακτοποιημένος19

  • 33,3%δεδομένα.πίνακας14

  • 54,8%παντα23

Ψήφισαν 42 χρήστες. 9 χρήστες απείχαν.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο