Ενώ οι βάσεις δεδομένων προσφέρουν πολύ αποδοτικούς τρόπους αποθήκευσης δεδομένων και ερωτημάτων με χρήση γλωσσών ερωτημάτων, ο πιο ευέλικτος τρόπος επεξεργασίας δεδομένων είναι να γράψετε το δικό σας πρόγραμμα γιανα χειριστείτε τα δεδομένα. Σε πολλές περιπτώσεις, η εκτέλεση ενός ερωτήματος βάσης δεδομένων θα ήταν πιο αποτελεσματική. Ωστόσο, σε κάποιες περιπτώσεις όπου απαιτείται πιο σύνθετη επεξεργασία δεδομένων, αυτό δεν μπορεί να γίνει εύκολα με SQL.
Η επεξεργασία δεδομένων μπορεί να προγραμματιστεί σε οποιαδήποτε γλώσσα προγραμματισμού, αλλά υπάρχουν ορισμένες γλώσσες που είναι υψηλότερου επιπέδου όσον αφορά την εργασία με δεδομένα. Οι επιστήμονες δεδομένων συνήθως προτιμούν μία από τις παρακάτω γλώσσες:
Ενώ οι βάσεις δεδομένων προσφέρουν πολύ αποδοτικούς τρόπους αποθήκευσης και ερωτηματολογίας των δεδομένων χρησιμοποιώντας γλώσσες ερωτημάτων, ο πιο ευέλικτος τρόπος επεξεργασίας δεδομένων είναι να γράψετε το δικό σας πρόγραμμα γιανα χειριστείτε τα δεδομένα. Σε πολλές περιπτώσεις, η εκτέλεση ενός ερωτήματος σε βάση δεδομένων είναι πιο αποτελεσματική. Ωστόσο, σε κάποιες περιπτώσεις που απαιτείται πιο πολύπλοκη επεξεργασία δεδομένων, αυτό δεν μπορεί να γίνει εύκολα με SQL.
Η επεξεργασία δεδομένων μπορεί να προγραμματιστεί σε οποιαδήποτε γλώσσα προγραμματισμού, αλλά υπάρχουν ορισμένες γλώσσες υψηλότερου επιπέδου όσον αφορά την εργασία με δεδομένα. Οι επιστήμονες δεδομένων προτιμούν τυπικά μία από τις ακόλουθες γλώσσες:
* **[Python](https://www.python.org/)**, μια γενικής χρήσης γλώσσα προγραμματισμού, που συχνά θεωρείται μία από τις καλύτερες επιλογές για αρχάριους λόγω της απλότητάς της. Η Python διαθέτει πολλές επιπλέον βιβλιοθήκες που μπορούν να σας βοηθήσουν να λύσετε πολλά πρακτικά προβλήματα, όπως εξαγωγή δεδομένων από αρχεία ZIP ή μετατροπή εικόνας σε κλίμακα του γκρι. Εκτός από την επιστήμη δεδομένων, η Python χρησιμοποιείται συχνά και για ανάπτυξη ιστού.
* **[R](https://www.r-project.org/)** είναι ένας παραδοσιακός εργαλειακός πάγκος που αναπτύχθηκε με γνώμονα την στατιστική επεξεργασία δεδομένων. Περιέχει επίσης μεγάλο αποθετήριο βιβλιοθηκών (CRAN), καθιστώντας την καλή επιλογή για επεξεργασία δεδομένων. Ωστόσο, το R δεν είναι γλώσσα γενικής χρήσης και χρησιμοποιείται σπάνια εκτός του πεδίου της επιστήμης δεδομένων.
* **[Julia](https://julialang.org/)** είναι άλλη μία γλώσσα που αναπτύχθηκε ειδικά για την επιστήμη δεδομένων. Σκοπός της είναινα προσφέρει καλύτερη απόδοση από την Python, καθιστώντας την εξαιρετικό εργαλείο για επιστημονικά πειράματα.
* **[Python](https://www.python.org/)**, μια γλώσσα προγραμματισμού γενικού σκοπού, που συχνά θεωρείται μία από τις καλύτερες επιλογές για αρχάριους λόγω της απλότητάς της. Η Python έχει πολλές επιπλέον βιβλιοθήκες που μπορούν να σας βοηθήσουν να λύσετε πολλά πρακτικά προβλήματα, όπως η εξαγωγή των δεδομένων σας από αρχείο ZIP ή η μετατροπή εικόνας σε κλίμακα του γκρίζου. Εκτός από την επιστήμη δεδομένων, η Python χρησιμοποιείται συχνά και για ανάπτυξη ιστοσελίδων.
* **[R](https://www.r-project.org/)** είναι ένα παραδοσιακό σύνολο εργαλείων που αναπτύχθηκε με γνώμονα την στατιστική επεξεργασία δεδομένων. Περιέχει επίσης μεγάλο αποθετήριο βιβλιοθηκών (CRAN), καθιστώντας το καλή επιλογή για επεξεργασία δεδομένων. Ωστόσο, το R δεν είναι γλώσσα προγραμματισμού γενικού σκοπού και σπάνια χρησιμοποιείται εκτός του τομέα της επιστήμης δεδομένων.
* **[Julia](https://julialang.org/)** είναι μια άλλη γλώσσα που αναπτύχθηκε ειδικά για την επιστήμη δεδομένων. Έχει σκοπόνα προσφέρει καλύτερη απόδοση από την Python, καθιστώντας την εξαιρετικό εργαλείο για επιστημονικά πειράματα.
Σε αυτό το μάθημα, θα εστιάσουμε στη χρήση της Python για απλή επεξεργασία δεδομένων. Θα υποθέσουμε βασική εξοικείωση με τη γλώσσα. Εάν θέλετε εκτενέστερη περιήγηση στην Python, μπορείτε να ανατρέξετε σε έναν από τους παρακάτω πόρους:
Σ' αυτό το μάθημα θα επικεντρωθούμε στη χρήση της Python για απλή επεξεργασία δεδομένων. Θα υποθέσουμε βασική εξοικείωση με τη γλώσσα. Αν θέλετε μια πιο βαθιά εξερεύνηση της Python, μπορείτε να ανατρέξετε σε έναν από τους παρακάτω πόρους:
* [Μάθετε Python με Διασκεδαστικό Τρόπο με Χελώνα και fractals](https://github.com/shwars/pycourse) - Γρήγορο εισαγωγικό μάθημα στην Python μέσω GitHub
* [Κάντε τα Πρώτα σας Βήματα με την Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Μονοπάτι Μάθησης στο [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Μάθε Python με Διασκεδαστικό Τρόπο με Turtle Graphics και Fractals](https://github.com/shwars/pycourse) - Γρήγορο εισαγωγικό μάθημα για Python στο GitHub
* [Κάνε τα Πρώτα σου Βήματα με την Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Μονοπάτι Μάθησης στο [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Τα δεδομένα μπορεί να έρχονται σε πολλές μορφές. Σε αυτό το μάθημα, θα εξετάσουμε τρεις μορφές δεδομένων - **ταμπελοποιημένα δεδομένα**, **κείμενο** και **εικόνες**.
Τα δεδομένα μπορούν να έχουν πολλές μορφές. Σ' αυτό το μάθημα θα μελετήσουμε τρεις μορφές δεδομένων - **δομημένα δεδομένα σε πίνακες**, **κείμενο** και **εικόνες**.
Θα εστιάσουμε σε μερικά παραδείγματα επεξεργασίας δεδομένων, αντί να σας δώσουμε πλήρη επισκόπηση όλων των σχετικών βιβλιοθηκών. Αυτό θα σας επιτρέψει νακατανοήσετε την κύρια ιδέα των δυνατοτήτων και να έχετε την κατανόηση για το πούνα βρείτε λύσεις στα προβλήματά σας όταν τις χρειαστείτε.
Θα επικεντρωθούμε σε λίγα παραδείγματα επεξεργασίας δεδομένων, αντί να σας δώσουμε μια πλήρη εικόνα όλων των σχετικών βιβλιοθηκών. Αυτό θα σας επιτρέψει ναπάρετε την κεντρική ιδέα του τι είναι δυνατόν, και να σας αφήσει με την κατανόηση του πουνα βρείτε λύσεις στα προβλήματά σας όταν τις χρειαστείτε.
> **Πιο χρήσιμη συμβουλή**. Όταν χρειάζεται να εκτελέσετε κάποια λειτουργία σε δεδομένα που δεν ξέρετε πώς να κάνετε, δοκιμάστε να το αναζητήσετε στο διαδίκτυο. Το [Stackoverflow](https://stackoverflow.com/) συνήθως περιέχει πολλά χρήσιμα παραδείγματα κώδικα σε Python για πολλές τυπικές εργασίες.
> **Πιο χρήσιμη συμβουλή**. Όταν χρειάζεται να εκτελέσετε κάποια λειτουργία σε δεδομένα που δεν ξέρετε πώς να κάνετε, δοκιμάστε να την αναζητήσετε στο διαδίκτυο. Το [Stackoverflow](https://stackoverflow.com/) συνήθως περιέχει πολλά χρήσιμα παραδείγματα κώδικα σε Python για πολλές τυπικές εργασίες.
Έχετε ήδη συναντήσει τα ταμπελοποιημένα δεδομένα όταν μιλήσαμε για σχεσιακές βάσεις δεδομένων. Όταν έχετε πολλά δεδομένα, και αυτά περιέχονται σε πολλούς διαφορετικούς συνδεδεμένους πίνακες, αξίζει σίγουρα να χρησιμοποιήσετε SQL γιανα εργαστείτε μαζί τους. Ωστόσο, υπάρχουν πολλές περιπτώσεις όπου έχουμε έναν πίνακα δεδομένων και θέλουμε να αποκτήσουμε κάποια **κατανόηση** ή **γνώση** για αυτά τα δεδομένα, όπως η κατανομή, η συσχέτιση μεταξύ τιμών κτλ. Στην επιστήμη δεδομένων, υπάρχουν πολλές περιπτώσεις όπου πρέπει να εκτελέσουμε κάποιες μετατροπές των αρχικών δεδομένων, ακολουθούμενες από οπτικοποίηση. Και τα δύο αυτά βήματα μπορούν εύκολα να γίνουν με χρήση Python.
Έχετε ήδη συναντήσει τα δομημένα δεδομένα όταν μιλήσαμε για σχεσιακές βάσεις δεδομένων. Όταν έχετε πολλά δεδομένα, και αυτά περιέχονται σε πολλούς διαφορετικούς συνδεδεμένους πίνακες, σίγουρα έχει νόημα να χρησιμοποιείτε SQL γιανα δουλέψετε με αυτά. Ωστόσο, υπάρχουν πολλές περιπτώσεις όπου έχουμε ένα πίνακα δεδομένων και χρειαζόμαστε να αποκτήσουμε κάποια **κατανόηση** ή **ενδείξεις** για αυτά τα δεδομένα, όπως η διανομή, η συσχέτιση μεταξύ τιμών κτλ. Στην επιστήμη δεδομένων, υπάρχουν πολλές περιπτώσεις όπου χρειάζεται να εκτελέσουμε κάποιες μετασχηματισμούς στα αρχικά δεδομένα, ακολουθούμενα από οπτικοποίηση. Και τα δύο αυτά βήματα μπορούν εύκολα να γίνουν με Python.
Υπάρχουν δύο πιο χρήσιμες βιβλιοθήκες στην Python που μπορούν να σας βοηθήσουν να χειριστείτε τα ταμπελοποιημένα δεδομένα:
* **[Pandas](https://pandas.pydata.org/)** σάς επιτρέπει να χειρίζεστε τα λεγόμενα **Dataframes**, που είναι ανάλογα με σχεσιακούς πίνακες. Μπορείτε να έχετε ονομασμένες στήλες και να εκτελείτε διάφορες λειτουργίες σε γραμμές, στήλες και γενικά σε dataframes.
* **[Numpy](https://numpy.org/)** είναι μία βιβλιοθήκη για εργασία με **τενσόρες**, δηλαδή πολυδιάστατους **πίνακες**. Ο πίνακας έχει τιμές του ίδιου βασικού τύπου, και είναι απλούστερος από το dataframe, αλλά προσφέρει περισσότερες μαθηματικές λειτουργίες και δημιουργεί λιγότερο φόρτο.
Υπάρχουν δύο πιο χρήσιμες βιβλιοθήκες στην Python που μπορούν να σας βοηθήσουν να χειριστείτε δομημένα δεδομένα:
* **[Pandas](https://pandas.pydata.org/)** σας επιτρέπει να χειριστείτε τις λεγόμενες **Dataframes**, που είναι ανάλογα με πίνακες σχεσιακών βάσεων δεδομένων. Μπορείτε να έχετε ονοματισμένες στήλες, και να εκτελείτε διάφορες λειτουργίες σε γραμμές, στήλες και γενικά στα dataframes.
* **[Numpy](https://numpy.org/)** είναι μια βιβλιοθήκη για εργασία με **τεντώσεις** (tensors), δηλαδή πολυδιάστατους **πίνακες** (arrays). Ο πίνακας έχει τιμές ίδιου τύπου, και είναι πιο απλός από το dataframe, αλλά προσφέρει περισσότερες μαθηματικές λειτουργίες και δημιουργεί λιγότερο overhead.
Υπάρχουν και μερικές άλλες βιβλιοθήκες που πρέπει να γνωρίζετε:
* **[Matplotlib](https://matplotlib.org/)** είναι μια βιβλιοθήκη που χρησιμοποιείται για οπτικοποίηση δεδομένων και σχεδιασμό γραφημάτων
* **[SciPy](https://www.scipy.org/)** είναι μια βιβλιοθήκη με επιπλέον επιστημονικές συναρτήσεις. Την έχουμε ήδη συναντήσει όταν μιλήσαμε για πιθανότητες και στατιστική.
Υπάρχουν επίσης μερικές άλλες βιβλιοθήκες που πρέπει να γνωρίζετε:
* **[Matplotlib](https://matplotlib.org/)** είναι βιβλιοθήκη που χρησιμοποιείται για οπτικοποίηση δεδομένων και σχεδίαση γραφημάτων
* **[SciPy](https://www.scipy.org/)** είναι βιβλιοθήκη με επιπλέον επιστημονικές συναρτήσεις. Την έχουμε συναντήσει ήδη όταν μιλούσαμε για πιθανότητες και στατιστική
Ακολουθεί ένα κομμάτι κώδικα που συνήθως χρησιμοποιείτε γιανα εισάγετε αυτές τις βιβλιοθήκες στην αρχή του προγράμματός σας σε Python:
Εδώ είναι ένα κομμάτι κώδικα που συνήθως χρησιμοποιείτε γιανα εισάγετε αυτές τις βιβλιοθήκες στην αρχή του προγράμματος Python σας:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import ... # χρειάζεταινα καθορίσετε τα ακριβή υποπακέτα που χρειάζεστε
from scipy import ... # πρέπεινα καθορίσετε τα ακριβή υποπακέτα που χρειάζεστε
```
Το Pandas βασίζεται σε μερικές βασικές έννοιες.
Η Pandas βασίζεται σε μερικές βασικές έννοιες.
### Series
**Series** είναι μια ακολουθία τιμών, παρόμοια με μία λίστα ή numpy array. Η βασική διαφορά είναι ότι η series έχει επίσης **δείκτη** (index), και όταν εκτελούμε λειτουργίες σε series (π.χ. πρόσθεση), ο δείκτης λαμβάνεται υπόψη. Ο δείκτης μπορεί να είναι απλά ακέραιος αριθμός σειράς (είναι ο δείκτης που χρησιμοποιείται ως προεπιλογή όταν δημιουργούμε series από λίστα ή array), ή μπορεί να έχει πολύπλοκη δομή, όπως χρονικό διάστημα.
**Series** είναι μια ακολουθία τιμών, ανάλογη με μια λίστα ή numpy array. Η βασική διαφορά είναι ότι η σειρά έχει και ένα **ευρετήριο** (index), και όταν δουλεύουμε με σειρές (π.χ., τις προσθέτουμε), το ευρετήριο λαμβάνεται υπόψη. Το ευρετήριο μπορεί να είναι τόσο απλό όσο ο αριθμός γραμμής ακεραίου τύπου (είναι το προεπιλεγμένο ευρετήριο κατά τη δημιουργία σειράς από λίστα ή array), ή μπορεί να έχει πιο σύνθετη δομή, όπως χρονικό διάστημα.
> **Σημείωση**: Υπάρχει κάποιος εισαγωγικός κώδικας Pandas στο συνοδευτικό τετράδιο [`notebook.ipynb`](notebook.ipynb). Εδώ παρουσιάζουμε μόνο κάποια από τα παραδείγματα και μπορείτε σίγουρα να εξετάσετε ολόκληρο το τετράδιο.
> **Σημείωση**: Υπάρχει κάποιος εισαγωγικός κώδικας Pandas στο συνοδευτικό notebook [`notebook.ipynb`](notebook.ipynb). Εδώ παρουσιάζουμε κάποιες από τις περιπτώσεις, και σίγουρα μπορείτε να δείτε το πλήρες notebook.
Ας δούμε ένα παράδειγμα: θέλουμε να αναλύσουμε τις πωλήσεις του παγωτατζίδικου μας. Ας δημιουργήσουμε μια σειρά από αριθμούς πωλήσεων (αριθμός πωληθέντων τεμαχίων κάθε μέρα) για ένα χρονικό διάστημα:
Ας δούμε ένα παράδειγμα: θέλουμε να αναλύσουμε τις πωλήσεις της παγωταρίας μας. Ας δημιουργήσουμε μια σειρά με αριθμούς πωλήσεων (αριθμός ειδών που πωλούνται κάθε μέρα) για κάποιο χρονικό διάστημα:
```python
start_date = "Jan 1, 2020"
@ -66,22 +66,22 @@ print(f"Length of index is {len(idx)}")
Ας υποθέσουμε τώρα ότι κάθε εβδομάδα οργανώνουμε ένα πάρτυ για φίλους και παίρνουμε επιπλέον 10 πακέτα παγωτά για το πάρτυ. Μπορούμε να δημιουργήσουμε μια άλλη series, με δείκτη την εβδομάδα, γιανα το κάνουμε προφανές:
Τώρα υποθέστε ότι κάθε εβδομάδα οργανώνουμε πάρτυ για φίλους, και παίρνουμε επιπλέον 10 πακέτα παγωτό για το πάρτυ. Μπορούμε να δημιουργήσουμε μια άλλη σειρά, με ευρετήριο εβδομάδας, γιανα το δείξουμε:
> **Σημείωση** ότι δεν χρησιμοποιούμε την απλή σύνταξη `total_items+additional_items`. Εάν το κάναμε έτσι, θα είχαμε πολλές τιμές `NaN` (*Not a Number*) στη σειρα που προκύπτει. Αυτό συμβαίνει επειδή λείπουν κάποιες τιμές για ορισμένα σημεία δείκτη στη σειρά `additional_items`, και η πρόσθεση `NaN` με οτιδήποτε έχει αποτέλεσμα `NaN`. Έτσι πρέπει ναορίσουμε την παράμετρο `fill_value` κατά την πρόσθεση.
> **Σημείωση** ότι δεν χρησιμοποιούμε τη απλή σύνταξη `total_items+additional_items`. Αν το κάναμε, θα λάβαμε πολλά `NaN` (*Not a Number*) τιμές στη σειρά που προκύπτει. Αυτό συμβαίνει επειδή λείπουν τιμές για κάποια σημεία ευρετηρίου στη σειρά `additional_items`, και η πρόσθεση `NaN` σε οτιδήποτε δίνει `NaN`. Έτσι, πρέπει να καθορίσουμε την παράμετρο `fill_value` κατά την πρόσθεση.
Με χρονικές σειρές, μπορούμε επίσης να**αναδειγματοληψύσουμε** τη σειρά με διαφορετικά χρονικά διαστήματα. Για παράδειγμα, αν θέλουμε να υπολογίσουμε το μέσο όρο όγκου πωλήσεων κάθε μήνα. Μπορούμε να χρησιμοποιήσουμε τον παρακάτω κώδικα:
Με τις χρονικές σειρές μπορούμε επίσης να κάνουμε **επαναδειγματοληψία** (resample) της σειράς με διαφορετικά χρονικά διαστήματα. Για παράδειγμα, υποθέστε ότι θέλουμε να υπολογίσουμε τον μέσο όρο των πωλήσεων ανά μήνα. Μπορούμε να χρησιμοποιήσουμε τον παρακάτω κώδικα:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
@ -90,98 +90,98 @@ ax = monthly.plot(kind='bar')
### DataFrame
Το DataFrame είναι ουσιαστικά ένα σύνολο series με τον ίδιο δείκτη. Μπορούμε να συνδυάσουμε πολλαπλές σειρές σε ένα DataFrame:
Ένα DataFrame είναι ουσιαστικά μια συλλογή από σειρές με το ίδιο ευρετήριο. Μπορούμε να συνδυάσουμε πολλές σειρές σε ένα DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
Αυτό θα δημιουργήσει έναν οριζόντιο πίνακα σαν τον παρακάτω:
Αυτό θα δημιουργήσει έναν οριζόντιο πίνακα όπως ο παρακάτω:
Εδώ η λειτουργία `.T` σημαίνει τη μεταθετική λειτουργία του DataFrame, δηλαδή την αλλαγή μεταξύ γραμμών και στηλών, και η λειτουργία `rename` μας επιτρέπει να μετονομάσουμε τις στήλες ώστε να ταιριάζουν με το προηγούμενο παράδειγμα.
Εδώ `.T` σημαίνει την λειτουργία μεταφοράς του DataFrame, δηλαδή αλλαγή γραμμών και στηλών, και η λειτουργία `rename` μας επιτρέπει να μετονομάσουμε τις στήλες ώστε να ταιριάζουν με το προηγούμενο παράδειγμα.
Ακολουθούν μερικές από τις πιο σημαντικές λειτουργίες που μπορούμε να εκτελέσουμε σε DataFrames:
Εδώ είναι μερικές από τις πιο σημαντικές λειτουργίες που μπορούμε να εκτελέσουμε στα DataFrames:
**Επιλογή στήλης**. Μπορούμε να επιλέξουμε μεμονωμένες στήλες γράφοντας `df['A']` - αυτή η λειτουργία επιστρέφει μια Series. Μπορούμε επίσης να επιλέξουμε υποσύνολο στηλών σε άλλο DataFrame γράφοντας `df[['B','A']]` - αυτό επιστρέφει άλλο DataFrame.
**Επιλογή στήλης**. Μπορούμε να επιλέξουμε μεμονωμένες στήλες γράφοντας `df['A']` - αυτή η πράξη επιστρέφει μια Series. Μπορούμε επίσης να επιλέξουμε υπό-σύνολο στηλών σε άλλο DataFrame γράφοντας `df[['B','A']]` - αυτό επιστρέφει άλλο DataFrame.
**Φιλτράρισμα** συγκεκριμένων γραμμών βάσει κριτηρίων. Για παράδειγμα, γιανα κρατήσουμε μόνο τις γραμμές που η στήλη `A` είναι μεγαλύτερη από 5, μπορούμε να γράψουμε `df[df['A']>5]`.
**Φιλτράρισμα** μόνο ορισμένων γραμμών βάσει κριτηρίων. Για παράδειγμα, γιανα αφήσουμε μόνο γραμμές όπου η στήλη `A` είναι μεγαλύτερη του 5, μπορούμε να γράψουμε `df[df['A']>5]`.
> **Σημείωση**: Ο τρόπος που λειτουργεί το φιλτράρισμα είναι ο εξής. Η έκφραση `df['A']<5` επιστρέφει μια λογική σειρά, που δείχνει αν η έκφραση είναι `True` ή `False`για κάθε στοιχείο της αρχικής series `df['A']`. Όταν μια λογική σειρά χρησιμοποιείται ως δείκτης, επιστρέφει ένα υποσύνολο γραμμών του DataFrame. Επομένως, δεν είναι δυνατό να χρησιμοποιηθεί αυθαίρετη λογική έκφραση της Python, π.χ. το να γράψουμε`df[df['A']>5 and df['A']<7]` θα ήταν λάθος. Αντίθετα, πρέπει να χρησιμοποιήσετε την ειδική λειτουργία `&`για λογικές σειρές, γράφοντας `df[(df['A']>5) & (df['A']<7)]` (*οι παρενθέσεις εδώ είναι σημαντικές*).
> **Σημείωση**: Ο τρόπος που δουλεύει το φιλτράρισμα είναι ο ακόλουθος. Η έκφραση `df['A']<5` επιστρέφει μία boolean σειρά, που δείχνει αν η έκφραση είναι `True` ή `False`για κάθε στοιχείο της αρχικής σειράς `df['A']`. Όταν η boolean σειρά χρησιμοποιείται ως ευρετήριο, επιστρέφει ένα υποσύνολο γραμμών του DataFrame. Επομένως, δεν είναι δυνατό να χρησιμοποιηθούν αυθαίρετες boolean εκφράσεις της Python, π.χ. το`df[df['A']>5 and df['A']<7]` θα ήταν λάθος. Αντίθετα, θα πρέπει να χρησιμοποιήσετε την ειδική λειτουργία `&`στις boolean σειρές, γράφοντας `df[(df['A']>5) & (df['A']<7)]` (*οι παρενθέσεις είναι σημαντικές εδώ*).
**Δημιουργία νέων υπολογιζόμενων στηλών**. Μπορούμε εύκολα να δημιουργήσουμε νέες υπολογιζόμενες στήλες για το DataFrame μας χρησιμοποιώντας εκφράσεις όπως αυτή:
**Δημιουργία νέων υπολογιζόμενων στηλών**. Μπορούμε εύκολα να δημιουργήσουμε νέες υπολογιζόμενες στήλες στο DataFrame μας χρησιμοποιώντας εκφράσεις όπως η εξής:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Αυτό το παράδειγμα υπολογίζει την απόκλιση της στήλης A από τη μέση της τιμή. Αυτό που συμβαίνει είναι ότι υπολογίζουμε μια series και μετά την εκχωρούμε στο αριστερό μέρος, δημιουργώντας άλλη στήλη. Επομένως, δεν μπορούμε να χρησιμοποιήσουμε λειτουργίες που δεν είναι συμβατές με σειρές, για παράδειγμα, ο παρακάτω κώδικας είναι λάθος:
Αυτό το παράδειγμα υπολογίζει τη διαφορά της στήλης A από την μέση τιμή της. Στην ουσία υπολογίζουμε μια σειρά, και μετά την αναθέτουμε στην αριστερή πλευρά, δημιουργώντας άλλη μια στήλη. Επομένως, δεν μπορούμε να χρησιμοποιήσουμε λειτουργίες που δεν είναι συμβατές με σειρές, π.χ., ο παρακάτω κώδικας είναι λάθος:
```python
# Λανθασμένος κώδικας -> df['ADescr'] = "Low" αν df['A'] <5αλλιώς"Hi"
Τοπαραπάνω δείγμα, παρόλο που είναι συντακτικά σωστό, δίνει λάθος αποτέλεσμα, επειδή εκχωρεί το μήκος της σειράς `B` σε όλες τις τιμές στη στήλη, αντί το μήκος των μεμονωμένων στοιχείων όπως θέλαμε.
Τοτελευταίο παράδειγμα, ενώ είναι συντακτικά σωστό, παράγει λάθος αποτέλεσμα, γιατί αναθέτει το μήκος της σειράς `B` σε όλες τις τιμές της στήλης, και όχι το μήκος των μεμονωμένων στοιχείων όπως θέλαμε.
Εάν χρειάζεται να υπολογίσουμε σύνθετες εκφράσεις, μπορούμε να χρησιμοποιήσουμε τη συνάρτηση `apply`. Τοπαραπάνω παράδειγμα μπορεί να γραφτεί ως εξής:
Αν χρειάζεται να υπολογίσουμε σύνθετες εκφράσεις όπως αυτή, μπορούμε να χρησιμοποιήσουμε τη συνάρτηση `apply`. Τοτελευταίο παράδειγμα μπορεί να γραφεί ως εξής:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# ή
df['LenB'] = df['B'].apply(len)
```
Μετά από τις παραπάνω λειτουργίες, θα καταλήξουμε στο παρακάτω DataFrame:
Μετά τις παραπάνω λειτουργίες, το DataFrame θα έχει ως εξής:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
| 0 | 1 | Μου | -4.0 | 1 |
| 1 | 2 | αρέσει | -3.0 | 4 |
| 2 | 3 | να | -2.0 | 2 |
| 3 | 4 | χρησιμοποιώ | -1.0 | 3 |
| 0 | 1 | I | -4.0 | 1 |
| 1 | 2 | like | -3.0 | 4 |
| 2 | 3 | to | -2.0 | 2 |
| 3 | 4 | use | -1.0 | 3 |
| 4 | 5 | Python | 0.0 | 6 |
| 5 | 6 | και | 1.0 | 3 |
| 5 | 6 | and | 1.0 | 3 |
| 6 | 7 | Pandas | 2.0 | 6 |
| 7 | 8 | πολύ | 3.0 | 4 |
| 8 | 9 | πολύ | 4.0 | 4 |
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Επιλογή γραμμών με βάση αριθμούς** μπορεί να γίνει με τη χρήση του`iloc`. Για παράδειγμα, γιανα επιλέξουμε τις πρώτες 5 γραμμές από το DataFrame:
**Επιλογή γραμμών με βάση αριθμούς** μπορεί να γίνει χρησιμοποιώντας`iloc`. Για παράδειγμα, γιανα επιλέξουμε τις πρώτες 5 γραμμές από το DataFrame:
```python
df.iloc[:5]
```
**Ομαδοποίηση** χρησιμοποιείται συχνά γιανα πάρουμε ένα αποτέλεσμα παρόμοιο με *pivot tables* στο Excel. Ας υποθέσουμε ότι θέλουμε να υπολογίσουμε τον μέσο όρο της στήλης `A`για κάθε τιμή της `LenB`. Τότε μπορούμε να ομαδοποιήσουμε το DataFrame με βάση τη `LenB` και να καλέσουμε`mean`:
**Ομαδοποίηση** χρησιμοποιείται συχνά γιανα προκύψει αποτέλεσμα παρόμοιο με *pivot tables* στο Excel. Υποθέστε ότι θέλουμε να υπολογίσουμε τη μέση τιμή της στήλης `A`για κάθε πιθανό αριθμό `LenB`. Τότε μπορούμε να ομαδοποιήσουμε το DataFrame μας κατά `LenB`, και να καλέσουμε τη μέθοδο`mean`:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
Ανχρειάζεταινα υπολογίσουμε τον μέσο όρο και τον αριθμό των στοιχείων σε κάθε ομάδα, μπορούμε να χρησιμοποιήσουμε πιο σύνθετη συνάρτηση`aggregate`:
Ανθέλουμενα υπολογίσουμε τον μέσο όρο και τον αριθμό των στοιχείων στην ομάδα, μπορούμε να χρησιμοποιήσουμε πιο σύνθετη μέθοδο`aggregate`:
Έχουμε δει πόσο εύκολο είναι να κατασκευάσουμε Series και DataFrames από Python αντικείμενα. Ωστόσο, τα δεδομένα συνήθως έρχονται με τη μορφή αρχείου κειμένου ή πίνακα Excel. Ευτυχώς, το Pandas μας προσφέρει έναν απλό τρόπο να φορτώσουμε δεδομένα από το δίσκο. Για παράδειγμα, η ανάγνωση ενός αρχείου CSV είναι τόσο απλή όπως αυτή:
Έχουμε δει πόσο εύκολο είναι να δημιουργήσουμε Series και DataFrames από αντικείμενα Python. Ωστόσο, τα δεδομένα συνήθως προέρχονται σε μορφή αρχείου κειμένου ή πίνακα Excel. Ευτυχώς, το Pandas μας προσφέρει έναν απλό τρόπο γιανα φορτώνουμε δεδομένα από τον δίσκο. Για παράδειγμα, το διάβασμα ενός αρχείου CSV είναι τόσο απλό όσο το εξής:
```python
df = pd.read_csv('file.csv')
```
Θα δούμε περισσότερα παραδείγματα φόρτωσης δεδομένων, συμπεριλαμβανομένης της λήψης τους από εξωτερικές ιστοσελίδες, στην ενότητα "Challenge"
Θα δούμε περισσότερα παραδείγματα φόρτωσης δεδομένων, συμπεριλαμβανομένης της ανάκτησής τους από εξωτερικούς ιστότοπους, στην ενότητα "Challenge"
### Εκτύπωση και Σχεδίαση
Ένας Data Scientist συχνά πρέπει να εξερευνά τα δεδομένα, επομένως είναι σημαντικό να μπορεί να τα απεικονίζει. Όταν το DataFrame είναι μεγάλο, πολλές φορές θέλουμε απλώς να βεβαιωθούμε ότι κάνουμε τα πάντα σωστά, εκτυπώνοντας τις πρώτες λίγες γραμμές. Αυτό μπορεί να γίνει καλώντας το `df.head()`. Αν το τρέχετε από το Jupyter Notebook, θα τυπώσει το DataFrame σε μια όμορφη πίνακα μορφή.
Ένας Data Scientist συχνά πρέπει να εξερευνά τα δεδομένα, γι' αυτό είναι σημαντικό να μπορεί να τα οπτικοποιεί. Όταν το DataFrame είναι μεγάλο, πολλές φορές θέλουμε απλώς να βεβαιωθούμε ότι κάνουμε τα πάντα σωστά εκτυπώνοντας τις πρώτες λίγες γραμμές. Αυτό μπορεί να γίνει καλώντας τη μέθοδο`df.head()`. Αν το τρέχετε από το Jupyter Notebook, θα εμφανίσει το DataFrame σε όμορφη πίνακα μορφή.
Έχουμε επίσης δει τη χρήση της συνάρτησης `plot`γιανααπεικονίσουμε κάποιες στήλες. Ενώ το `plot` είναι πολύ χρήσιμο για πολλές εργασίες, και υποστηρίζει πολλούς διαφορετικούς τύπους γραφημάτων μέσω της παραμέτρου `kind=`, μπορείτε πάντα να χρησιμοποιήσετε την ωμή βιβλιοθήκη `matplotlib`γιανα σχεδιάσετε κάτι πιο σύνθετο. Θα καλύψουμε την οπτικοποίηση δεδομένων λεπτομερώς σε ξεχωριστά μαθήματα.
Έχουμε επίσης δει τη χρήση της συνάρτησης `plot`γιαναοπτικοποιήσουμε κάποιες στήλες. Ενώ το `plot` είναι πολύ χρήσιμο για πολλές εργασίες και υποστηρίζει πολλούς διαφορετικούς τύπους γραφημάτων μέσω της παραμέτρου `kind=`, μπορείτε πάντα να χρησιμοποιήσετε την ακατέργαστη βιβλιοθήκη `matplotlib`γιανα σχεδιάσετε κάτι πιο σύνθετο. Θα καλύψουμε την οπτικοποίηση δεδομένων αναλυτικά σε ξεχωριστά μαθήματα.
Αυτή η επισκόπηση καλύπτει τις πιο σημαντικές έννοιες του Pandas, ωστόσο, η βιβλιοθήκη είναι πολύ πλούσια, και δεν υπάρχει όριο σε ό,τι μπορείτε να κάνετε με αυτή! Ας εφαρμόσουμε τώρα αυτή τη γνώση για την επίλυση συγκεκριμένου προβλήματος.
Αυτή η επισκόπηση καλύπτει τις πιο σημαντικές έννοιες του Pandas, ωστόσο η βιβλιοθήκη είναι πολύ πλούσια και δεν υπάρχει όριο σε ό,τι μπορείτε να κάνετε με αυτήν! Ας εφαρμόσουμε τώρα αυτή τη γνώση για την επίλυση ενός συγκεκριμένου προβλήματος.
## 🚀 Challenge 1: Ανάλυση της Εξάπλωσης του COVID
## 🚀 Πρόκληση 1: Ανάλυση της Εξάπλωσης του COVID
Το πρώτο πρόβλημα που θα επικεντρωθούμε είναι η μοντελοποίηση της επιδημικής εξάπλωσης του COVID-19. Για να το κάνουμε αυτό, θα χρησιμοποιήσουμε τα δεδομένα για τον αριθμό των μολυσμένων ατόμων σε διάφορες χώρες, που παρέχονται από το [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) στο [Johns Hopkins University](https://jhu.edu/). Το σύνολο δεδομένων είναι διαθέσιμο στο [αυτό το αποθετήριο GitHub](https://github.com/CSSEGISandData/COVID-19).
Το πρώτο πρόβλημα στο οποίο θα εστιάσουμε είναι η μοντελοποίηση της επιδημικής εξάπλωσης του COVID-19. Για να το κάνουμε αυτό, θα χρησιμοποιήσουμε τα δεδομένα σχετικά με τον αριθμό των μολυσμένων ατόμων σε διάφορες χώρες, που παρέχονται από το [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) στο [Johns Hopkins University](https://jhu.edu/). Το σύνολο δεδομένων είναι διαθέσιμο στο [Aποθετήριο GitHub](https://github.com/CSSEGISandData/COVID-19).
Επειδή θέλουμε να δείξουμε πώς ναδιαχειριζόμαστε τα δεδομένα, σας προσκαλούμε να ανοίξετε το [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) και να το διαβάσετε από πάνω προς τα κάτω. Μπορείτε επίσης να εκτελέσετε τα κελιά και να κάνετε μερικές ασκήσεις που έχουμε αφήσει για εσάς στο τέλος.
Επειδή θέλουμε να δείξουμε πώς ναχειριστείτε δεδομένα, σας προσκαλούμε να ανοίξετε το [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) και να το διαβάσετε από πάνω προς τα κάτω. Μπορείτε επίσης να εκτελέσετε cells και να κάνετε ορισμένες προκλήσεις που σας αφήσαμε στο τέλος.
> Αν δεν ξέρετε πώς να τρέξετε κώδικα στο Jupyter Notebook, ρίξτε μια ματιά σε [αυτό το άρθρο](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Εργασία με Αδόμητα Δεδομένα
## Εργασία με Μη Δομημένα Δεδομένα
Ενώ τα δεδομένα πολύ συχνά έρχονται σε πίνακα μορφή, σε ορισμένες περιπτώσεις πρέπει ναδιαχειριστούμε λιγότερο δομημένα δεδομένα, για παράδειγμα, κείμενο ή εικόνες. Σε αυτή την περίπτωση, γιανα εφαρμόσουμε τις τεχνικές επεξεργασίας δεδομένων που είδαμε παραπάνω, πρέπει με κάποιο τρόπονα**εξάγουμε** δομημένα δεδομένα. Εδώ είναι μερικά παραδείγματα:
Ενώ τα δεδομένα πολύ συχνά έρχονται σε πίνακα μορφή, σε ορισμένες περιπτώσεις πρέπει ναασχοληθούμε με λιγότερο δομημένα δεδομένα, για παράδειγμα, κείμενο ή εικόνες. Σε αυτήν την περίπτωση, γιανα εφαρμόσουμε τις τεχνικές επεξεργασίας δεδομένων που έχουμε δει παραπάνω, πρέπει κάπωςνα**εξάγουμε** δομημένα δεδομένα. Εδώ είναι μερικά παραδείγματα:
* Εξαγωγή λέξεων-κλειδιών από κείμενο, και να δούμε πόσο συχνά εμφανίζονται αυτές οι λέξεις-κλειδιά
* Χρήση νευρωνικών δικτύων γιατην εξαγωγή πληροφοριών σχετικά με αντικείμενα στην εικόνα
* Λήψη πληροφοριών για τα συναισθήματα των ανθρώπων από βίντεο κάμερα
* Εξαγωγή λέξεων-κλειδιών από το κείμενο και παρατήρηση της συχνότητας εμφάνισής τους
* Χρήση νευρωνικών δικτύων για εξαγωγή πληροφοριών σχετικά με αντικείμενα στην εικόνα
* Απόκτηση πληροφοριών για τα συναισθήματα των ανθρώπων σε βίντεο
## 🚀 Challenge 2: Ανάλυση Επιστημονικών Εργασιών για τον COVID
## 🚀 Πρόκληση 2: Ανάλυση Επιστημονικών Εργασιών για τον COVID
Σε αυτή την άσκηση, θα συνεχίσουμε με το θέμα της πανδημίας COVID και θα εστιάσουμε στην επεξεργασία επιστημονικών εργασιών γιατο θέμα. Υπάρχει το [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) με περισσότερες από 7000 (την ώρα που γράφεται) εργασίες για τον COVID, διαθέσιμες με μεταδεδομένα και περιλήψεις (για περίπου τις μισές εξ αυτών υπάρχει και πλήρες κείμενο).
Σε αυτή την πρόκληση, θα συνεχίσουμε με το θέμα της πανδημίας COVID και θα εστιάσουμε στην επεξεργασία επιστημονικών εργασιών πάνω στο θέμα. Υπάρχει το [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) με πάνω από 7000 (τη στιγμή που γράφεται) εργασίες για τον COVID, διαθέσιμες με μεταδεδομένα και περιλήψεις (και για περίπου τις μισές υπάρχει επίσης παρεχόμενο πλήρες κείμενο).
Ένα πλήρες παράδειγμα ανάλυσης αυτού του συνόλου δεδομένων χρησιμοποιώντας την υπηρεσία γνωστικής ανάλυσης [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) περιγράφεται [σε αυτό το άρθρο blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Θα συζητήσουμε μια απλοποιημένη εκδοχή αυτής της ανάλυσης.
Ένα πλήρες παράδειγμα ανάλυσης αυτού του συνόλου δεδομένων χρησιμοποιώντας την υπηρεσία [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) περιγράφεται [σε αυτή την ανάρτηση ιστολογίου](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Θα συζητήσουμε μια απλοποιημένη έκδοση αυτής της ανάλυσης.
> **NOTE**: Δεν παρέχουμε αντίγραφο του συνόλου δεδομένων ως μέρος αυτού του αποθετηρίου. Μπορείνα χρειαστεί πρώτα να κατεβάσετε το αρχείο [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) από [αυτό το σύνολο δεδομένων στο Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Μπορεί να απαιτείται εγγραφή στο Kaggle. Μπορείτε επίσης να κατεβάσετε το σύνολο δεδομένων χωρίς εγγραφή [εδώ](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), αλλά θα περιλαμβάνει όλα τα πλήρη κείμενα επιπροσθέτως των μεταδεδομένων.
> **ΣΗΜΕΙΩΣΗ**: Δεν παρέχουμε αντίγραφο του συνόλου δεδομένων ως μέρος αυτού του αποθετηρίου. Πιθανόννα χρειαστεί πρώτα να κατεβάσετε το αρχείο [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) από [αυτό το dataset στο Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Η εγγραφή στο Kaggle μπορεί να απαιτείται. Μπορείτε επίσης να κατεβάσετε το σύνολο δεδομένων χωρίς εγγραφή [από εδώ](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), αλλά θα περιλαμβάνει όλα τα πλήρη κείμενα επιπλέον του αρχείου μεταδεδομένων.
Ανοίξτε το [`notebook-papers.ipynb`](notebook-papers.ipynb) και διαβάστε το από πάνω προς τα κάτω. Μπορείτε επίσης να εκτελέσετε τα κελιά και να κάνετε κάποιες ασκήσεις που έχουμε αφήσει για εσάς στο τέλος.
Ανοίξτε το [`notebook-papers.ipynb`](notebook-papers.ipynb) και διαβάστε το από πάνω προς τα κάτω. Μπορείτε επίσης να εκτελέσετε κελιά και να κάνετε μερικές προκλήσεις που σας αφήσαμε στο τέλος.

## Επεξεργασία Δεδομένων Εικόνας
Πρόσφατα, έχουν αναπτυχθεί πολύ ισχυρά μοντέλα AI που μας επιτρέπουν να κατανοούμε εικόνες. Υπάρχουν πολλοί στόχοι που μπορούν να λυθούν χρησιμοποιώντας προεκπαιδευμένα νευρωνικά δίκτυα ή υπηρεσίες νέφους. Μερικά παραδείγματα περιλαμβάνουν:
Πρόσφατα, έχουν αναπτυχθεί πολύ ισχυρά μοντέλα τεχνητής νοημοσύνης που μας επιτρέπουν να κατανοούμε εικόνες. Υπάρχουν πολλές εργασίες που μπορούν να λυθούν χρησιμοποιώντας προεκπαιδευμένα νευρωνικά δίκτυα ή υπηρεσίες στο νέφος. Μερικά παραδείγματα περιλαμβάνουν:
* **Κατηγοριοποίηση Εικόνων**, που μπορεί να βοηθήσει στην κατηγοριοποίηση της εικόνας σε μία από τις προκαθορισμένες κλάσεις. Μπορείτε εύκολα να εκπαιδεύσετε τους δικούς σας ταξινομητές εικόνων χρησιμοποιώντας υπηρεσίες όπως το [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Ανίχνευση Αντικειμένων** για τον εντοπισμό διαφόρων αντικειμένων στην εικόνα. Υπηρεσίες όπως το [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) μπορούν να εντοπίσουν πολλά κοινά αντικείμενα, και μπορείτε να εκπαιδεύσετε το μοντέλο [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) γιαναεντοπίζει συγκεκριμένα αντικείμενα ενδιαφέροντος.
* **Ανίχνευση Προσώπου**, συμπεριλαμβανομένης της εκτίμησης ηλικίας, φύλου και συναισθημάτων. Αυτό μπορεί να γίνει μέσω του [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Κατηγοριοποίηση Εικόνας**, η οποία μπορεί να σας βοηθήσει να κατηγοριοποιήσετε την εικόνα σε μία από τις προεπιλεγμένες κλάσεις. Μπορείτε εύκολα να εκπαιδεύσετε τους δικούς σας ταξινομητές εικόνας χρησιμοποιώντας υπηρεσίες όπως το [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Ανίχνευση Αντικειμένων** για την ανίχνευση διαφορετικών αντικειμένων σε μια εικόνα. Υπηρεσίες όπως το [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) μπορούν να εντοπίσουν έναν αριθμό κοινών αντικειμένων, και μπορείτε να εκπαιδεύσετε το μοντέλο [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) γιαναανιχνεύσει ορισμένα συγκεκριμένα αντικείμενα ενδιαφέροντος.
* **Ανίχνευση Προσώπου**, συμπεριλαμβανομένης της ανίχνευσης Ηλικίας, Φύλου και Συναισθήματος. Αυτό μπορεί να γίνει μέσω του [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Όλες αυτές οι υπηρεσίες νέφους μπορούν να κληθούν χρησιμοποιώντας τα [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), και επομένως μπορούν εύκολα να ενσωματωθούν στο ροή εργασίας της εξερεύνησης δεδομένων σας.
Όλες αυτές οι υπηρεσίες στο νέφος μπορούν να κληθούν χρησιμοποιώντας [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), και έτσι μπορούν εύκολα να ενσωματωθούν στη ροή εργασίας εξερεύνησης δεδομένων σας.
Εδώ είναι μερικά παραδείγματα εξερεύνησης δεδομένων από πηγές δεδομένων εικόνας:
* Στο άρθρο blog [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) εξερευνούμε φωτογραφίες του Instagram, προσπαθώντας να καταλάβουμε τι κάνει τους ανθρώπους να δίνουν περισσότερα likes σε μια φωτογραφία. Πρώτα εξάγουμε όσες περισσότερες πληροφορίες από τις εικόνες γίνεται χρησιμοποιώντας το [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), και μετά χρησιμοποιούμε το [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) γιανακατασκευάσουμε ένα ερμηνεύσιμο μοντέλο.
* Στο [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) χρησιμοποιούμε το [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) γιανα εξάγουμε συναισθήματα από ανθρώπους σε φωτογραφίες από εκδηλώσεις, προκειμένου να προσπαθήσουμενα καταλάβουμε τι κάνει τους ανθρώπους χαρούμενους.
Ακολουθούν μερικά παραδείγματα εξερεύνησης δεδομένων από πηγές Δεδομένων Εικόνας:
* Στην ανάρτηση ιστολογίου [Πώς να μάθετε Data Science χωρίς κωδικοποίηση](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) εξερευνούμε φωτογραφίες του Instagram, προσπαθώντας να καταλάβουμε τι κάνει τους ανθρώπους να δίνουν περισσότερα likes σε μια φωτογραφία. πρώτα εξάγουμε όσες περισσότερες πληροφορίες από τις εικόνες μπορούμε χρησιμοποιώντας το [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) και μετά χρησιμοποιούμε το [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) γιαναχτίσουμε ένα ερμηνεύσιμο μοντέλο.
* Στο [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) χρησιμοποιούμε το [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) γιανα εξάγουμε συναισθήματα σε άτομα σε φωτογραφίες από εκδηλώσεις, με σκοπόνα καταλάβουμε τι κάνει τους ανθρώπους χαρούμενους.
## Συμπέρασμα
Είτε έχετε ήδη δομημένα είτε αδόμητα δεδομένα, χρησιμοποιώντας Python μπορείτε να εκτελέσετε όλα τα βήματα που σχετίζονται με την επεξεργασία και κατανόηση των δεδομένων. Είναι μάλλονο πιο ευέλικτος τρόπος επεξεργασίας δεδομένων, και αυτός είναι ο λόγος που η πλειοψηφία των data scientists χρησιμοποιεί την Python ως το βασικό τους εργαλείο. Ημάθηση της Python σε βάθος είναι μάλλον μια καλή ιδέα αν είστε σοβαροί για το ταξίδι σας στα data science!
Είτε έχετε ήδη δομημένα είτε μη δομημένα δεδομένα, χρησιμοποιώντας Python μπορείτε να εκτελέσετε όλα τα βήματα που σχετίζονται με την επεξεργασία και κατανόηση δεδομένων. Προφανώς είναιο πιο ευέλικτος τρόπος επεξεργασίας δεδομένων, και αυτός είναι ο λόγος που η πλειονότητα των data scientists χρησιμοποιεί την Python ως το βασικό τους εργαλείο. Ηεκμάθηση Python σε βάθος είναι πιθανώς καλή ιδέα αν είστε σοβαροί για το ταξίδι σας στην επιστήμη δεδομένων!
## [Quiz μετά το μάθημα](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## [Κουίζ μετά το μάθημα](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Επανεξέταση & Αυτομελέτη
## Επανεξέταση & Αυτοδιδασκαλία
**Βιβλία**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
* [Wes McKinney. Python για Ανάλυση Δεδομένων: Επεξεργασία Δεδομένων με Pandas, NumPy και IPython](https://www.amazon.com/gp/product/1491957662)
**Online Πόροι**
* Επίσημο tutorial [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
**Διαδικτυακοί Πόροι**
* Επίσημο [Tutorial 10 λεπτών για το Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Τεκμηρίωση για την Οπτικοποίηση στο Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Μάθηση Python**
* [Μάθετε Python με Διασκεδαστικό Τρόπο με Turtle Graphics και Fractals](https://github.com/shwars/pycourse)
* [Κάντε τα Πρώτα σας Βήματα με την Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Learning Path στο [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
**Εκμάθηση Python**
* [Μάθετε Python με διασκεδαστικό τρόπο με το Turtle Graphics και Fractals](https://github.com/shwars/pycourse)
* [Κάντε τα πρώτα σας βήματα με Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Μονοπάτι μάθησης στο [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Εργασία
[Πραγματοποιήστε πιο λεπτομερή μελέτη δεδομένων για τις παραπάνω ασκήσεις](assignment.md)
[Κάντε πιο λεπτομερείς μελέτες δεδομένων για τις παραπάνω προκλήσεις](assignment.md)
## Πιστώσεις
## Ευχαριστίες
Αυτό το μάθημα έχει γραφτεί με ♥️ από τον [Dmitry Soshnikov](http://soshnikov.com)
Αυτό το μάθημα έχει συγγραφεί με ♥️ από τον [Dmitry Soshnikov](http://soshnikov.com)
Även om databaser erbjuder mycket effektiva sätt att lagra och söka data med hjälp av frågespråk, är det mest flexibla sättet att bearbeta data att skriva sitt eget program för att manipulera data. I många fall är en databasfråga ett mer effektivt sätt. Men i vissa fall, när mer komplex databehandling behövs, kan det inte enkelt göras med SQL.
Databehandling kan programmeras i vilket programmeringsspråk som helst, men det finns vissa språk som är mer högspecialiserade för att arbeta med data. Dataforskare föredrar vanligtvis ett av följande språk:
Medan databaser erbjuder mycket effektiva sätt att lagra data och fråga efter dem med frågespråk, är det mest flexibla sättet att bearbeta data att skriva ditt eget program för att manipulera data. I många fall skulle en databasfråga vara ett mer effektivt sätt. Men i vissa fall när mer komplex databehandling behövs kan det inte enkelt göras med SQL.
Databearbetning kan programmeras i vilket programspråk som helst, men det finns vissa språk som är på högre nivå när det gäller att arbeta med data. Dataforskare föredrar vanligtvis ett av följande språk:
* **[Python](https://www.python.org/)**, ett allmänt programmeringsspråk, som ofta anses vara ett av de bästa alternativen för nybörjare tack vare sin enkelhet. Python har många tilläggsbibliotek som kan hjälpa dig att lösa många praktiska problem, som att extrahera data från en ZIP-fil eller konvertera en bild till gråskala. Förutom datavetenskap används Python också ofta för webbutveckling.
* **[R](https://www.r-project.org/)** är en traditionell verktygslåda utvecklad med statistisk databehandling i åtanke. Det innehåller också ett stort bibliotek av paket (CRAN), vilket gör det till ett bra val för databehandling. Dock är R inte ett allmänt programmeringsspråk och används sällan utanför datavetenskapens område.
* **[Julia](https://julialang.org/)** är ett annat språk som utvecklats specifikt för datavetenskap. Det är avsett att ge bättre prestanda än Python, vilket gör det till ett utmärkt verktyg för vetenskapliga experiment.
* **[Python](https://www.python.org/)**, ett general purpose-programmeringsspråk, som ofta anses vara ett av de bästa alternativen för nybörjare tack vare sin enkelhet. Python har många tilläggsbibliotek som kan hjälpa dig lösa många praktiska problem, som att extrahera data från ZIP-arkiv eller konvertera bilder till gråskala. Utöver datavetenskap används Python också ofta för webbprogrammering.
* **[R](https://www.r-project.org/)** är ett traditionellt verktyg utvecklat med statistisk databehandling i fokus. Det innehåller också ett stort bibliotek av paket (CRAN), vilket gör det till ett bra val för datahantering. Dock är R inte ett general purpose-programmeringsspråk och används sällan utanför datavetenskapsdomänen.
* **[Julia](https://julialang.org/)** är ett annat språk som är utvecklat särskilt för datavetenskap. Det är avsett att ge bättre prestanda än Python, vilket gör det till ett utmärkt verktyg för vetenskapliga experiment.
I denna lektion kommer vi att fokusera på att använda Python för enkel databehandling. Vi förutsätter grundläggande kunskaper i språket. Om du vill ha en djupare introduktion till Python kan du hänvisa till någon av följande resurser:
I denna lektion kommer vi att fokusera på att använda Python för enkel databehandling. Vi förutsätter grundläggande bekantskap med språket. Om du vill ha en djupare genomgång av Python kan du hänvisa till någon av följande resurser:
* [Lär dig Python på ett roligt sätt med Turtle Graphics och Fraktaler](https://github.com/shwars/pycourse) - En snabb introduktionskurs till Python-programmering på GitHub
* [Ta dina första steg med Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - En lärväg på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Lär dig Python på ett roligt sätt med Turtle Graphics och Fraktaler](https://github.com/shwars/pycourse) - GitHub-baserad snabb introduktionskurs i Pythonprogrammering
* [Ta dina första steg med Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Lerningsväg på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Data kan komma i många former. I denna lektion kommer vi att titta på tre former av data - **tabulär data**, **text** och **bilder**.
Data kan komma i många former. I denna lektion kommer vi att behandla tre former av data - **tabulär data**, **text** och **bilder**.
Vi kommer att fokusera på några exempel på databehandling istället för att ge en fullständig översikt över alla relaterade bibliotek. Detta gör att du kan få en grundläggande förståelse för vad som är möjligt och veta var du kan hitta lösningar på dina problem när du behöver dem.
Vi kommer att fokusera på några exempel på databehandling istället för att ge en fullständig översikt av alla relaterade bibliotek. Detta gör att du kan få en huvudidé om vad som är möjligt och ger dig förståelse för var du kan hitta lösningar på dina problem när du behöver dem.
> **Det mest användbara rådet**. När du behöver utföra en viss operation på data som du inte vet hur du ska göra, försök att söka efter det på internet. [Stackoverflow](https://stackoverflow.com/) innehåller ofta många användbara kodexempel i Python för många typiska uppgifter.
> **Mest användbara råd**. När du behöver utföra en viss operation på data men inte vet hur, försök söka efter det på internet. [Stackoverflow](https://stackoverflow.com/) innehåller vanligtvis många användbara kodexempel i Python för många typiska uppgifter.
## [Förtest före lektionen](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tabulär data och DataFrames
Du har redan stött på tabulär data när vi pratade om relationsdatabaser. När du har mycket data och den är organiserad i många olika länkade tabeller, är det definitivt vettigt att använda SQL för att arbeta med den. Men det finns många fall där vi har en tabell med data och vi behöver få en **förståelse** eller **insikter** om denna data, såsom fördelning, korrelation mellan värden, etc. Inom datavetenskap finns det många fall där vi behöver utföra vissa transformationer av den ursprungliga datan, följt av visualisering. Båda dessa steg kan enkelt göras med Python.
Det finns två mest användbara bibliotek i Python som kan hjälpa dig att hantera tabulär data:
* **[Pandas](https://pandas.pydata.org/)** gör det möjligt att manipulera så kallade **DataFrames**, som är analoga med relationstabeller. Du kan ha namngivna kolumner och utföra olika operationer på rader, kolumner och DataFrames i allmänhet.
* **[Numpy](https://numpy.org/)** är ett bibliotek för att arbeta med **tensorer**, dvs. flerdimensionella **arrayer**. En array har värden av samma underliggande typ och är enklare än en DataFrame, men erbjuder fler matematiska operationer och skapar mindre overhead.
## Tabulär data och Dataframes
Det finns också ett par andra bibliotek du bör känna till:
* **[Matplotlib](https://matplotlib.org/)** är ett bibliotek som används för datavisualisering och att rita grafer
* **[SciPy](https://www.scipy.org/)** är ett bibliotek med några ytterligare vetenskapliga funktioner. Vi har redan stött på detta bibliotek när vi pratade om sannolikhet och statistik
Du har redan stött på tabulär data när vi pratade om relationsdatabaser. När du har mycket data och den är innehållen i många olika länkade tabeller, är det definitivt vettigt att använda SQL för att arbeta med det. Men det finns många fall där vi har en datatabell och behöver få lite **förståelse** eller **insikter** om denna data, som fördelning, korrelation mellan värden etc. Inom datavetenskap finns det många fall där vi behöver utföra transformationssteg på ursprungsdata följt av visualisering. Båda dessa steg kan enkelt göras med Python.
Här är ett kodexempel som du vanligtvis använder för att importera dessa bibliotek i början av ditt Python-program:
Det finns två mest använda bibliotek i Python som kan hjälpa dig hantera tabulär data:
* **[Pandas](https://pandas.pydata.org/)** låter dig manipulera så kallade **Dataframes**, som är analoga med relationsdatabastabeller. Du kan ha namngivna kolumner och utföra olika operationer på rader, kolumner och i allmänhet på dataframes.
* **[Numpy](https://numpy.org/)** är ett bibliotek för att arbeta med **tensors**, dvs. flerdimensionella **arrayer**. En array har värden av samma underliggande typ och är enklare än dataframe, men erbjuder fler matematiska operationer och skapar mindre overhead.
Det finns också ett par andra bibliotek som är bra att känna till:
* **[Matplotlib](https://matplotlib.org/)** är ett bibliotek som används för datavisualisering och att plotta diagram
* **[SciPy](https://www.scipy.org/)** är ett bibliotek med ytterligare vetenskapliga funktioner. Vi har redan stött på detta bibliotek när vi pratade om sannolikhet och statistik
Här är en kodsnutt som man typiskt använder för att importera dessa bibliotek i början av ditt Pythonprogram:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
```
from scipy import ... # du behöver ange exakt vilka underpaket du behöver
```
Pandas är centrerat kring några grundläggande koncept.
Pandas är centrerat kring några grundläggande begrepp.
### Series
### Series
**Series** är en sekvens av värden, liknande en lista eller numpy-array. Den största skillnaden är att en Series också har ett **index**, och när vi arbetar med Series (t.ex. adderar dem) tas indexet i beaktande. Indexet kan vara så enkelt som ett heltalsradnummer (det är standardindexet när man skapar en Series från en lista eller array), eller det kan ha en komplex struktur, såsom ett datumintervall.
**Series** är en serie värden, liknande en lista eller numpy-array. Huvudskillnaden är att en series också har ett **index**, och när vi opererar på serier (t.ex. adderar dem) tas indexet i beaktning. Index kan vara så enkelt som ett heltalsradnummer (det är det index som används som standard när man skapar en series från en lista eller array) eller ha en komplex struktur, som ett datumintervall.
> **Notera**: Det finns lite introducerande Pandas-kod i den medföljande notebooken [`notebook.ipynb`](notebook.ipynb). Vi skisserar bara några exempel här, och du är definitivt välkommen att kolla in hela notebooken.
> **Notera**: Det finns viss introduktionskod för Pandas i den medföljande notebooken [`notebook.ipynb`](notebook.ipynb). Vi beskriver bara några exempel här och du är definitivt välkommen att titta på hela notebooken.
Tänk på ett exempel: vi vill analysera försäljningen av vår glasskiosk. Låt oss generera en Series med försäljningssiffror (antal sålda enheter per dag) för en viss tidsperiod:
Tänk dig ett exempel: vi vill analysera försäljningen på vår glassbar. Låt oss generera en series med försäljningssiffror (antal sålda artiklar varje dag) för en given tidsperiod:
Anta nu att vi varje vecka organiserar en fest för vänner och tar med ytterligare 10 paket glass till festen. Vi kan skapa en annan Series, indexerad per vecka, för att visa detta:
Anta nu att vi varje vecka anordnar en fest för vänner och tar med ytterligare 10 paket glass till festen. Vi kan skapa en annan series, indexerad på veckor, för att demonstrera det:
> **Notera** att vi inte använder den enkla syntaxen `total_items+additional_items`. Om vi gjorde det skulle vi få många `NaN` (*Not a Number*)-värden i den resulterande serien. Detta beror på att det saknas värden för vissa indexpunkter i serien `additional_items`, och att addera `NaN` till något resulterar i `NaN`. Därför måste vi specificera parametern `fill_value` under additionen.
> **Notera** att vi inte använder den enkla syntaxen `total_items+additional_items`. Om vi gjorde det hade vi fått många `NaN` (*Not a Number*) värden i den resulterande serien. Detta beror på att det finns saknade värden för vissa indexpunkter i serien `additional_items`, och att addera `NaN` till något ger `NaN`. Därför behöver vi specificera parametern `fill_value` vid addition.
Med tidsserier kan vi också **resampla** serien med olika tidsintervall. Till exempel, anta att vi vill beräkna den genomsnittliga försäljningsvolymen per månad. Vi kan använda följande kod:
På tidsserier kan vi även **resampla** serien med olika tidsintervall. Till exempel, anta att vi vill beräkna medelförsäljningsvolym per månad. Vi kan använda följande kod:
Här betyder `.T`operationen att transponera DataFrame, dvs. byta rader och kolumner, och operationen `rename` låter oss byta namn på kolumner för att matcha det tidigare exemplet.
Här betyder `.T`transponeringsoperationen av DataFrame, det vill säga att rader och kolumner byter plats, och `rename`-operationen tillåter oss att byta namn på kolumner för att matcha föregående exempel.
Här är några av de viktigaste operationerna vi kan utföra på DataFrames:
Här är några av de viktigaste operationerna vi kan göra på DataFrames:
**Kolumnval**. Vi kan välja enskilda kolumner genom att skriva `df['A']` - denna operation returnerar en Series. Vi kan också välja ett delmängd av kolumner till en annan DataFrame genom att skriva `df[['B','A']]` - detta returnerar en annan DataFrame.
**Kolumnval**. Vi kan välja enskilda kolumner genom att skriva `df['A']` - denna operation returnerar en Series. Vi kan också välja en delmängd av kolumner till en annan DataFrame genom att skriva `df[['B','A']]` - detta returnerar en annan DataFrame.
**Filtrering** av endast vissa rader baserat på kriterier. Till exempel, för att bara behålla rader där kolumn `A` är större än 5, kan vi skriva `df[df['A']>5]`.
**Filtrering** av endast vissa rader efter kriterier. Till exempel, för att behålla endast rader där kolumn `A` är större än 5 kan vi skriva `df[df['A']>5]`.
> **Notera**: Så här fungerar filtrering. Uttrycket `df['A']<5` returnerar en boolesk serie som anger om uttrycket är `True` eller `False` för varje element i den ursprungliga serien `df['A']`. När en boolesk serie används som index returnerar den en delmängd av rader i DataFrame. Därför är det inte möjligt att använda godtyckliga Python-booleska uttryck, till exempel skulle det vara fel att skriva `df[df['A']>5 and df['A']<7]`. Istället bör du använda den speciella `&`-operationen på booleska serier, genom att skriva `df[(df['A']>5) & (df['A']<7)]` (*parenteser är viktiga här*).
> **Notera**: Så här fungerar filtreringen. Uttrycket `df['A']<5` returnerar en boolesk Series som anger om uttrycket är `True` eller `False` för varje element i den ursprungliga serien `df['A']`. När en boolesk serie används som index returneras en delmängd av rader i DataFrame. Därför är det inte möjligt att använda godtyckliga Python-boolska uttryck, till exempel skulle `df[df['A']>5 and df['A']<7]` vara felaktigt. Istället bör du använda den speciella `&` operationen på booleska serier, skriva `df[(df['A']>5) & (df['A']<7)]` (*parenteserna är viktiga här*).
**Skapa nya beräkningsbara kolumner**. Vi kan enkelt skapa nya beräkningsbara kolumner för vår DataFrame genom att använda intuitiva uttryck som detta:
**Skapa nya beräkningsbara kolumner.** Vi kan enkelt skapa nya beräkningsbara kolumner för vår DataFrame genom att använda intuitiva uttryck som detta:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Detta exempel beräknar avvikelsen för A från dess medelvärde. Vad som faktiskt händer här är att vi beräknar en serie och sedan tilldelar denna serie till vänsterledet, vilket skapar en ny kolumn. Därför kan vi inte använda några operationer som inte är kompatibla med serier, till exempel är koden nedan felaktig:
```
Detta exempel beräknar avvikelsen för A från dess medelvärde. Vad som faktiskt händer här är att vi beräknar en Series och sedan tilldelar denna Series till vänster sida, vilket skapar en ny kolumn. Därför kan vi inte använda operationer som inte är kompatibla med Series, t.ex. koden nedan är felaktig:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] <5else"Hi"
df['LenB'] = len(df['B']) # <-Wrong result
```
Det senare exemplet, även om det är syntaktiskt korrekt, ger oss fel resultat eftersom det tilldelar längden på serien `B` till alla värden i kolumnen, och inte längden på de enskilda elementen som vi avsåg.
# Fel kod -> df['ADescr'] = "Låg" om df['A'] <5annars"Hög"
df['LenB'] = len(df['B']) # <-Fel resultat
```
Det senare exemplet, även om det är syntaktiskt korrekt, ger oss ett felaktigt resultat eftersom det tilldelar längden av serien `B` till alla värden i kolumnen, och inte längden på individuella element som vi avsåg.
Om vi behöver beräkna komplexa uttryck som detta kan vi använda funktionen `apply`. Det sista exemplet kan skrivas som följer:
Om vi behöver beräkna komplexa uttryck som detta kan vi använda funktionen `apply`. Det sista exemplet kan skrivas så här:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# eller
df['LenB'] = df['B'].apply(len)
```
```
Efter ovanstående operationer kommer vi att ha följande DataFrame:
Efter ovanstående operationer får vi följande DataFrame:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
@ -165,21 +166,21 @@ Efter ovanstående operationer kommer vi att ha följande DataFrame:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Välja rader baserat på nummer** kan göras med hjälp av `iloc`-konstruktionen. Till exempel, för att välja de första 5 raderna från DataFrame:
**Välja rader baserat på nummer** kan göras med hjälp av konstruktionen`iloc`. Till exempel för att välja de första 5 raderna från DataFrame:
```python
df.iloc[:5]
```
```
**Gruppering** används ofta för att få ett resultat som liknar *pivottabeller* i Excel. Anta att vi vill beräkna medelvärdet av kolumn `A` för varje givet antal`LenB`. Då kan vi gruppera vår DataFrame efter `LenB` och kalla på `mean`:
**Gruppering** används ofta för att få ett resultat liknande *pivot-tabeller* i Excel. Anta att vi vill beräkna medelvärdet av kolumn `A` för varje givet värde av`LenB`. Då kan vi gruppera vår DataFrame efter `LenB` och kalla `mean`:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
Om vi behöver beräkna medelvärdet och antalet element i gruppen kan vi använda en mer komplex `aggregate`-funktion:
```
Om vi vill beräkna medelvärde och antalet element i gruppen kan vi använda den mer avancerade funktionen `aggregate`:
@ -191,92 +192,97 @@ Detta ger oss följande tabell:
| 6 | 2 | 6.000000 |
### Hämta data
Vi har sett hur enkelt det är att skapa Series och DataFrames från Python-objekt. Men data kommer oftast i form av en textfil eller en Excel-tabell. Lyckligtvis erbjuder Pandas ett enkelt sätt att läsa in data från disk. Till exempel, att läsa en CSV-fil är så enkelt som detta:
Vi har sett hur enkelt det är att konstruera Series och DataFrames från Python-objekt. Data kommer dock vanligtvis i form av en textfil eller en Exceltabell. Som tur är erbjuder Pandas oss ett enkelt sätt att ladda data från disk. Till exempel är det lika enkelt att läsa en CSV-fil som detta:
```python
df = pd.read_csv('file.csv')
```
Vi kommer att se fler exempel på att läsa in data, inklusive att hämta den från externa webbplatser, i avsnittet "Utmaning".
Vi kommer att se fler exempel på laddning av data, inklusive att hämta det från externa webbplatser, i avsnittet "Challenge"
### Utskrift och Visualisering
### Utskrift och Plottning
En Data Scientist måste ofta utforska data, och därför är det viktigt att kunna visualisera den. När en DataFrame är stor vill vi ofta bara kontrollera att vi gör allt korrekt genom att skriva ut de första raderna. Detta kan göras genom att anropa `df.head()`. Om du kör det från Jupyter Notebook kommer det att skriva ut DataFrame i en snygg tabellform.
En data scientist behöver ofta utforska data, så det är viktigt att kunna visualisera det. När DataFrame är stor vill man många gånger bara försäkra sig om att allt går rätt till genom att skriva ut de första raderna. Det kan göras genom att anropa `df.head()`. Om du kör det i Jupyter Notebook kommer det att skriva ut DataFrame i ett snyggt tabellformat.
Vi har också sett användningen av funktionen`plot` för att visualisera vissa kolumner. Även om `plot` är mycket användbar för många uppgifter och stöder många olika grafiska typer via parametern `kind=`, kan du alltid använda det råa biblioteket`matplotlib` för att skapa något mer komplext. Vi kommer att gå igenom data-visualisering i detalj i separata kurslektioner.
Vi har också sett användningen av `plot`-funktionen för att visualisera vissa kolumner. Även om `plot` är mycket användbart för många uppgifter och stödjer många olika grafer via `kind=`-parametern kan du alltid använda det råa `matplotlib`-biblioteket för att plotta något mer komplext. Vi kommer att gå igenom datavisualisering i detalj i separata kurslektioner.
Denna översikt täcker de viktigaste koncepten i Pandas, men biblioteket är mycket rikt och det finns ingen gräns för vad du kan göra med det! Låt oss nu tillämpa denna kunskap för att lösa ett specifikt problem.
Den här översikten täcker de viktigaste koncepten inom Pandas, men biblioteket är mycket rikt, och det finns ingen gräns för vad du kan göra med det! Låt oss nu tillämpa denna kunskap för att lösa ett specifikt problem.
## 🚀 Utmaning 1: Analysera COVID-spridning
## 🚀 Utmaning 1: Analysera spridningen av COVID
Det första problemet vi kommer att fokusera på är modellering av epidemisk spridning av COVID-19. För att göra detta kommer vi att använda data om antalet smittade individer i olika länder, tillhandahållen av [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) vid [Johns Hopkins University](https://jhu.edu/). Datasetet finns tillgängligt i [denna GitHub-repository](https://github.com/CSSEGISandData/COVID-19).
Det första problemet vi ska fokusera på är modellering av epidemispridning av COVID-19. För att göra detta kommer vi att använda data om antalet infekterade individer i olika länder, tillhandahållna av [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) vid [Johns Hopkins University](https://jhu.edu/). Datasetet finns tillgängligt i [denna GitHub-repositorium](https://github.com/CSSEGISandData/COVID-19).
Eftersom vi vill demonstrera hur man hanterar data, uppmanar vi dig att öppna [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) och läsa den från början till slut. Du kan också köra cellerna och göra några utmaningar som vi har lämnat åt dig i slutet.
Eftersom vi vill visa hur man hanterar data, inbjuder vi dig att öppna [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) och läsa det från början till slut. Du kan också köra celler och göra några utmaningar som vi har lämnat till dig i slutet.
> Om du inte vet hur man kör kod i Jupyter Notebook, ta en titt på [denna artikel](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Arbeta med ostrukturerad data
Även om data ofta kommer i tabellform, måste vi i vissa fall hantera mindre strukturerad data, till exempel text eller bilder. I sådana fall, för att tillämpa databehandlingstekniker som vi har sett ovan, måste vi på något sätt **extrahera** strukturerad data. Här är några exempel:
Även om data ofta kommer i tabellform måste vi i vissa fall hantera mindre strukturerad data, till exempel text eller bilder. I sådana fall, för att tillämpa de databehandlingstekniker vi sett ovan, behöver vi på något sätt **extrahera** strukturerad data. Här är några exempel:
* Extrahera nyckelord från text och se hur ofta dessa nyckelord förekommer
* Använda neurala nätverk för att extrahera information om objekt på en bild
* Få information om människors känslor från en videokameraflöde
* Få information om människors känslor via videoövervakning
## 🚀 Utmaning 2: Analysera COVID-artiklar
I denna utmaning fortsätter vi med ämnet COVID-pandemin och fokuserar på att bearbeta vetenskapliga artiklar om ämnet. Det finns [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) med mer än 7000 (vid tidpunkten för skrivandet) artiklar om COVID, tillgängliga med metadata och abstrakt (och för ungefär hälften av dem finns även fulltext tillgänglig).
I denna utmaning fortsätter vi med ämnet COVID-pandemin och fokuserar på att bearbeta vetenskapliga artiklar om ämnet. Det finns en [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) med mer än 7000 (vid skrivande stund) artiklar om COVID, tillgängliga med metadata och abstrakt (och för ungefär hälften av dem finns även fulltext tillgänglig).
Ett komplett exempel på att analysera detta dataset med hjälp av [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) kognitiv tjänst beskrivs [i detta blogginlägg](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vi kommer att diskutera en förenklad version av denna analys.
Ett fullständigt exempel på att analysera detta dataset med hjälp av [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) kognitiva tjänst beskrivs [i detta blogginlägg](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vi kommer att diskutera en förenklad version av denna analys.
> **NOTE**: Vi tillhandahåller inte en kopia av datasetet som en del av denna repository. Du kan först behöva ladda ner filen [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) från [detta dataset på Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrering hos Kaggle kan krävas. Du kan också ladda ner datasetet utan registrering [härifrån](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), men det kommer att inkludera alla fulltexter utöver metadatafilen.
> **NOTERA**: Vi tillhandahåller inte en kopia av datasetet som en del av detta repository. Du kan först behöva ladda ner [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) filen från [detta dataset på Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrering hos Kaggle kan krävas. Du kan också ladda ner datasetet utan registrering [härifrån](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), men det inkluderar alla fulltexter tillsammans med metadatafilen.
Öppna [`notebook-papers.ipynb`](notebook-papers.ipynb) och läs den från början till slut. Du kan också köra cellerna och göra några utmaningar som vi har lämnat åt dig i slutet.
Öppna [`notebook-papers.ipynb`](notebook-papers.ipynb) och läs det från början till slut. Du kan också köra celler och göra några av de utmaningar vi har lämnat till dig i slutet.

## Bearbeta bilddata
Nyligen har mycket kraftfulla AI-modeller utvecklats som gör det möjligt att förstå bilder. Det finns många uppgifter som kan lösas med förtränade neurala nätverk eller molntjänster. Några exempel inkluderar:
Nyligen har mycket kraftfulla AI-modeller utvecklats som gör det möjligt för oss att förstå bilder. Det finns många uppgifter som kan lösas med hjälp av förtränade neurala nätverk eller molntjänster. Några exempel är:
* **Bildklassificering**, som kan hjälpa dig att kategorisera bilden i en av de fördefinierade klasserna. Du kan enkelt träna dina egna bildklassificerare med tjänster som [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Objektdetektering** för att identifiera olika objekt på bilden. Tjänster som [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) kan identifiera ett antal vanliga objekt, och du kan träna en [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) modell för att identifiera specifika objekt av intresse.
* **Ansiktsdetektering**, inklusive ålder, kön och känslodetektering. Detta kan göras via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Bildklassificering**, som kan hjälpa dig att kategorisera en bild i en av fördefinierade klasser. Du kan enkelt träna dina egna bildklassificerare med tjänster som [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Objektdetektering** för att upptäcka olika objekt i bilden. Tjänster som [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) kan upptäcka ett antal vanliga objekt, och du kan träna en [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) modell för att detektera vissa specifika objekt av intresse.
* **Ansiktsdetektion**, inklusive ålder-, köns- och känsledetektering. Detta kan göras via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Alla dessa molntjänster kan anropas med [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), och kan därför enkelt integreras i ditt datautforskningsflöde.
Alla dessa molntjänster kan anropas med hjälp av [Python SDK:er](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) och kan därför enkelt integreras i din datautforskningsprocess.
Här är några exempel på att utforska data från bilddatakällor:
* I blogginlägget [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) utforskar vi Instagram-foton och försöker förstå vad som får människor att ge fler likes till ett foto. Vi extraherar först så mycket information som möjligt från bilder med hjälp av [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), och använder sedan [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) för att bygga en tolkningsbar modell.
* I [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) använder vi [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) för att extrahera känslor hos människor på fotografier från evenemang, för att försöka förstå vad som gör människor glada.
* I blogginlägget [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) utforskar vi Instagram-foton och försöker förstå vad som får människor att ge fler likes till en bild. Vi extraherar först så mycket information som möjligt från bilder med hjälp av [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), och använder sedan [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) för att bygga en tolkbar modell.
* I [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) använder vi [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) för att extrahera känslor hos människor på fotografier från event, för att försöka förstå vad som gör människor lyckliga.
## Slutsats
## Avslutning
Oavsett om du redan har strukturerad eller ostrukturerad data, kan du med Python utföra alla steg relaterade till databehandling och förståelse. Det är förmodligen det mest flexibla sättet att bearbeta data, och det är anledningen till att majoriteten av data scientists använder Python som sitt primära verktyg. Att lära sig Python på djupet är förmodligen en bra idé om du är seriös med din resa inom data science!
Oavsett om du redan har strukturerad eller ostrukturerad data kan du med Python utföra alla steg relaterade till databehandling och förståelse. Det är förmodligen det mest flexibla sättet att behandla data, och det är anledningen till att majoriteten av data scientists använder Python som sitt främsta verktyg. Att lära sig Python på djupet är förmodligen en bra idé om du är seriös med din data science-resa!
## [Quiz efter föreläsningen](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## [Quiz efter lektionen](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Granskning& Självstudier
## Repetition& Självstudier
**Böcker**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Online-resurser**
* Officiell [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial
* [Dokumentation om Pandas-visualisering](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* Officiell [10 minuter till Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) handledning
* [Dokumentation om Pandas Visualisering](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Lär dig Python**
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse)
* [Ta dina första steg med Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Learning Path på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Lär dig Python på ett roligt sätt med Turtle Graphics och Fraktaler](https://github.com/shwars/pycourse)
* [Ta dina första steg med Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) lärandestig på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Uppgift
[Utför en mer detaljerad datastudie för utmaningarna ovan](assignment.md)
[Utför en mer detaljerad dataanalys för utmaningarna ovan](assignment.md)
## Krediter
## Tack
Denna lektion har skrivits med ♥️ av [Dmitry Soshnikov](http://soshnikov.com)
Denna lektion har författats med ♥️ av [Dmitry Soshnikov](http://soshnikov.com)
---
**Ansvarsfriskrivning**:
Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, vänligen notera att automatiska översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på sitt originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Ansvarsfriskrivning**:
Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, var vänlig notera att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning.
from scipy import ... # you need to specify exact sub-packages that you need
from scipy import ... # คุณต้องระบุซับแพ็กเกจที่ต้องการอย่างชัดเจน
```
Pandas มีแนวคิดพื้นฐานบางประการที่สำคัญ
Pandas มีแนวคิดพื้นฐานอยู่ไม่กี่อย่าง
### Series
### Series
**Series** คือชุดของค่าที่คล้ายกับ list หรือ numpy array ความแตกต่างหลักคือ series มี **index** และเมื่อเราดำเนินการกับ series (เช่น การบวก) index จะถูกนำมาพิจารณา Index อาจเป็นตัวเลขแถวแบบง่าย ๆ (เป็น index ที่ใช้โดยค่าเริ่มต้นเมื่อสร้าง series จาก list หรือ array) หรืออาจมีโครงสร้างที่ซับซ้อน เช่น ช่วงวันที่
**Series** คือชุดของค่าเรียงตามลำดับ คล้ายกับลิสต์หรือ numpy array ความแตกต่างหลักคือ series มี **index** และเมื่อเราทำงานกับ series (เช่นการบวก) จะพิจารณา index ด้วย Index อาจเป็นแค่หมายเลขแถวแบบเต็มจำนวนง่าย ๆ (ซึ่งเป็น index เริ่มต้นเมื่อสร้าง series จากลิสต์หรือ array) หรืออาจมีโครงสร้างซับซ้อน เช่น ช่วงเวลาของวันที่
ลองพิจารณาตัวอย่าง: เราต้องการวิเคราะห์ยอดขายของร้านไอศกรีมของเรา ลองสร้าง series ของตัวเลขยอดขาย (จำนวนสินค้าที่ขายได้ในแต่ละวัน) สำหรับช่วงเวลาหนึ่ง:
ลองพิจารณาตัวอย่าง: เราต้องการวิเคราะห์ยอดขายร้านไอศกรีมของเรา มาสร้าง series ของจำนวนยอดขาย (จำนวนชิ้นที่ขายได้แต่ละวัน) ในช่วงเวลาหนึ่ง:
```python
start_date = "Jan 1, 2020"
@ -65,20 +68,20 @@ items_sold.plot()
```

สมมติว่าในแต่ละสัปดาห์เราจัดงานเลี้ยงสำหรับเพื่อน ๆ และนำไอศกรีมเพิ่มอีก 10 แพ็คสำหรับงานเลี้ยง เราสามารถสร้าง series อีกตัวที่มี index เป็นสัปดาห์เพื่อแสดงสิ่งนี้:
สมมติว่าแต่ละสัปดาห์เราจัดงานปาร์ตี้ให้เพื่อน ๆ และเตรียมไอศกรีมเพิ่ม 10 แพ็คเพื่อใช้ในงาน เราสามารถสร้างอีก series หนึ่ง โดย index เป็นสัปดาห์ เพื่อแสดงสิ่งนี้:

> **หมายเหตุ** เราไม่ได้ใช้ syntax ง่าย ๆ `total_items+additional_items` หากเราใช้ syntax นี้ เราจะได้รับค่ามากมายที่เป็น `NaN` (*Not a Number*) ใน series ที่ได้ เนื่องจากมีค่าที่หายไปสำหรับบาง index point ใน series `additional_items` และการบวก `NaN` กับค่าใด ๆ จะให้ผลลัพธ์เป็น `NaN` ดังนั้นเราจำเป็นต้องระบุพารามิเตอร์ `fill_value` ระหว่างการบวก
> **หมายเหตุ** ว่าเราไม่ได้ใช้ไวยากรณ์ง่าย ๆ เช่น `total_items+additional_items` หากเราทำแบบนั้น เราจะได้รับค่าหลายค่า `NaN` (*Not a Number*) ใน series ผลลัพธ์ ซึ่งเป็นเพราะในบาง index ของ series `additional_items` ข้อมูลหายไป และเมื่อนำ `Nan` ไปรวมกับอย่างอื่นจะได้ `NaN` ดังนั้นเราต้องระบุพารามิเตอร์ `fill_value` ในการบวก
สำหรับ time series เราสามารถ **resample** series ด้วยช่วงเวลาที่แตกต่างกันได้ ตัวอย่างเช่น สมมติว่าเราต้องการคำนวณยอดขายเฉลี่ยรายเดือน เราสามารถใช้โค้ดต่อไปนี้:
กับ series ตามเวลา เรายังสามารถ **resample** series ด้วยช่วงเวลาที่ต่างกันได้ เช่น สมมติว่าเราต้องการคำนวณค่าความหมายยอดขายรายเดือน เราสามารถใช้โค้ดดังนี้:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
@ -87,23 +90,23 @@ ax = monthly.plot(kind='bar')
### DataFrame
DataFrame คือชุดของ series ที่มี index เดียวกัน เราสามารถรวม series หลายตัวเข้าด้วยกันเป็น DataFrame:
DataFrame คือชุดของ series ที่มี index เหมือนกัน เราสามารถรวม series หลายตัวเข้าด้วยกันเป็น DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
ตัวอย่างนี้คำนวณ divergence ของ A จากค่าเฉลี่ยของมัน สิ่งที่เกิดขึ้นจริงคือเรากำลังคำนวณ series และจากนั้นกำหนด series นี้ให้กับด้านซ้ายมือ สร้างคอลัมน์ใหม่ ดังนั้น เราไม่สามารถใช้การดำเนินการใด ๆ ที่ไม่เข้ากันกับ series ตัวอย่างเช่น โค้ดด้านล่างผิด:
ตัวอย่างนี้คำนวณความแตกต่างของ A จากค่าเฉลี่ย จริง ๆ แล้วเรากำลังคำนวณ series หนึ่ง แล้วกำหนด series นี้ให้กับด้านซ้าย ซึ่งสร้างคอลัมน์ใหม่ ดังนั้นจึงไม่สามารถใช้การดำเนินการที่ไม่เข้ากันกับ series ได้ เช่น โค้ดด้านล่างนี้ผิด:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] <5else"Hi"
df['LenB'] = len(df['B']) # <-Wrongresult
# โค้ดผิด -> df['ADescr'] = "Low" if df['A'] <5else"Hi"
df['LenB'] = len(df['B']) # <-ผลลัพธ์ผิด
```
ตัวอย่างหลัง แม้ว่าจะถูกต้องตามไวยากรณ์ แต่ให้ผลลัพธ์ที่ผิดเพราะมันกำหนดความยาวของ series `B` ให้กับค่าทั้งหมดในคอลัมน์ และไม่ใช่ความยาวขององค์ประกอบแต่ละตัวตามที่เราตั้งใจไว้
ตัวอย่างหลังถึงแม้จะถูกไวยากรณ์ แต่ให้ผลลัพธ์ผิดเพราะมันกำหนดความยาวของ series `B` ให้กับค่าทุกค่าในคอลัมน์ ไม่ใช่ความยาวของสมาชิกแต่ละตัวอย่างที่เราต้องการ
ตัวอย่างเต็มของการวิเคราะห์ชุดข้อมูลนี้โดยใช้ [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) cognitive service ได้อธิบายไว้ใน [บล็อกโพสต์นี้](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) เราจะพูดถึงเวอร์ชันที่ง่ายขึ้นของการวิเคราะห์นี้
ตัวอย่างเต็มของการวิเคราะห์ชุดข้อมูลนี้โดยใช้บริการความสามารถทางปัญญา [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) ได้อธิบายไว้ [ในโพสต์บล็อกนี้](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) เราจะพูดถึงเวอร์ชันที่ทำให้ง่ายของการวิเคราะห์นี้