[el,th,sv] chore(i18n): sync translations

Sync translations with latest source changes.
Languages: Greek [el], Thai [th], Swedish [sv]
pull/798/head
localizeflow[bot] 6 days ago
parent 859f24f791
commit 9a0682b36d

@ -96,8 +96,8 @@
"language_code": "el"
},
"2-Working-With-Data/07-python/README.md": {
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2026-07-02T10:09:45+00:00",
"original_hash": "fb29e3e0be486fe8f15d50bdade79eb1",
"translation_date": "2026-07-17T18:06:27+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "el"
},

@ -1,62 +1,62 @@
# Εργασία με Δεδομένα: Python και η Βιβλιοθήκη Pandas
| ![ Σχεδιαστικό από [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| ![ Σχεδιάγραμμα από [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| Εργασία με Python - _Σχεδιαστικό από [@nitya](https://twitter.com/nitya)_ |
| Εργασία με Python - _Σχεδιάγραμμα από [@nitya](https://twitter.com/nitya)_ |
[![Εισαγωγικό Βίντεο](../../../../translated_images/el/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
Ενώ οι βάσεις δεδομένων προσφέρουν πολύ αποδοτικούς τρόπους αποθήκευσης δεδομένων και ερωτημάτων με χρήση γλωσσών ερωτημάτων, ο πιο ευέλικτος τρόπος επεξεργασίας δεδομένων είναι να γράψετε το δικό σας πρόγραμμα για να χειριστείτε τα δεδομένα. Σε πολλές περιπτώσεις, η εκτέλεση ενός ερωτήματος βάσης δεδομένων θα ήταν πιο αποτελεσματική. Ωστόσο, σε κάποιες περιπτώσεις όπου απαιτείται πιο σύνθετη επεξεργασία δεδομένων, αυτό δεν μπορεί να γίνει εύκολα με 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 για πολλές τυπικές εργασίες.
## [Προ-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [Προ-μάθημα Κουίζ](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Ταμπελοποιημένα Δεδομένα και Dataframes
## Δομημένα Δεδομένα και Dataframes
Έχετε ήδη συναντήσει τα ταμπελοποιημένα δεδομένα όταν μιλήσαμε για σχεσιακές βάσεις δεδομένων. Όταν έχετε πολλά δεδομένα, και αυτά περιέχονται σε πολλούς διαφορετικούς συνδεδεμένους πίνακες, αξίζει σίγουρα να χρησιμοποιήσετε 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)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Γράφημα Χρονικής Σειράς](../../../../translated_images/el/timeseries-1.80de678ab1cf727e.webp)
![Διάγραμμα Χρονικής Σειράς](../../../../translated_images/el/timeseries-1.80de678ab1cf727e.webp)
Ας υποθέσουμε τώρα ότι κάθε εβδομάδα οργανώνουμε ένα πάρτυ για φίλους και παίρνουμε επιπλέον 10 πακέτα παγωτά για το πάρτυ. Μπορούμε να δημιουργήσουμε μια άλλη series, με δείκτη την εβδομάδα, για να το κάνουμε προφανές:
Τώρα υποθέστε ότι κάθε εβδομάδα οργανώνουμε πάρτυ για φίλους, και παίρνουμε επιπλέον 10 πακέτα παγωτό για το πάρτυ. Μπορούμε να δημιουργήσουμε μια άλλη σειρά, με ευρετήριο εβδομάδας, για να το δείξουμε:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Όταν προσθέτουμε δύο series, παίρνουμε τον συνολικό αριθμό:
Όταν προσθέτουμε δύο σειρές μεταξύ τους, παίρνουμε το συνολικό αριθμό:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Γράφημα Χρονικής Σειράς](../../../../translated_images/el/timeseries-2.aae51d575c55181c.webp)
![Διάγραμμα Χρονικής Σειράς](../../../../translated_images/el/timeseries-2.aae51d575c55181c.webp)
> **Σημείωση** ότι δεν χρησιμοποιούμε την απλή σύνταξη `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])
```
Αυτό θα δημιουργήσει έναν οριζόντιο πίνακα σαν τον παρακάτω:
Αυτό θα δημιουργήσει έναν οριζόντιο πίνακα όπως ο παρακάτω:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | Μου | αρέσει | να | χρησιμοποιώ | Python | και | Pandas | πολύ | πολύ |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Μπορούμε επίσης να χρησιμοποιήσουμε Series ως στήλες και να ορίσουμε ονόματα στηλών με λεξικό:
Μπορούμε επίσης να χρησιμοποιήσουμε Series σαν στήλες, και να ορίσουμε ονόματα στηλών χρησιμοποιώντας λεξικό:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
Αυτό θα μας δώσει πίνακα όπως ο παρακάτω:
Αυτό θα μας δώσει έναν πίνακα όπως ο παρακάτω:
| | A | B |
| --- | --- | ------ |
| 0 | 1 | Μου |
| 1 | 2 | αρέσει |
| 2 | 3 | να |
| 3 | 4 | χρησιμοποιώ |
| 0 | 1 | I |
| 1 | 2 | like |
| 2 | 3 | to |
| 3 | 4 | use |
| 4 | 5 | Python |
| 5 | 6 | και |
| 5 | 6 | and |
| 6 | 7 | Pandas |
| 7 | 8 | πολύ |
| 8 | 9 | πολύ |
| 7 | 8 | very |
| 8 | 9 | much |
**Σημείωση** ότι μπορούμε επίσης να πάρουμε αυτή τη διάταξη πίνακα μεταθέτοντας τον προηγούμενο πίνακα, π.χ. γράφοντας
**Σημείωση** ότι μπορούμε επίσης να πάρουμε αυτή τη διάταξη πίνακα μεταφέροντας (transposing) τον προηγούμενο πίνακα, π.χ. γράφοντας
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
df = pd.DataFrame([a,b]).T.rename(columns={ 0 : 'A', 1 : '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"
df['LenB'] = len(df['B']) # <- Λανθασμένο αποτέλεσμα
```
Το παραπάνω δείγμα, παρόλο που είναι συντακτικά σωστό, δίνει λάθος αποτέλεσμα, επειδή εκχωρεί το μήκος της σειράς `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`:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
Αυτό μας δίνει τον εξής πίνακα:
Αυτό μας δίνει τον παρακάτω πίνακα:
| LenB | Count | Mean |
| ---- | ----- | -------- |
@ -192,91 +192,93 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### Λήψη Δεδομένων
Έχουμε δει πόσο εύκολο είναι να κατασκευάσουμε 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 και να κάνετε ορισμένες προκλήσεις που σας αφήσαμε στο τέλος.
![COVID Spread](../../../../translated_images/el/covidspread.f3d131c4f1d260ab.webp)
> Αν δεν ξέρετε πώς να τρέξετε κώδικα στο 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) και διαβάστε το από πάνω προς τα κάτω. Μπορείτε επίσης να εκτελέσετε κελιά και να κάνετε μερικές προκλήσεις που σας αφήσαμε στο τέλος.
![Covid Medical Treatment](../../../../translated_images/el/covidtreat.b2ba59f57ca45fbc.webp)
## Επεξεργασία Δεδομένων Εικόνας
Πρόσφατα, έχουν αναπτυχθεί πολύ ισχυρά μοντέλα 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)
---

@ -96,8 +96,8 @@
"language_code": "sv"
},
"2-Working-With-Data/07-python/README.md": {
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:45:37+00:00",
"original_hash": "fb29e3e0be486fe8f15d50bdade79eb1",
"translation_date": "2026-07-17T18:09:09+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "sv"
},

@ -2,59 +2,61 @@
| ![ Sketchnote av [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| Arbeta med Python - _Sketchnote av [@nitya](https://twitter.com/nitya)_ |
| Arbeta med Python - _Sketchnote av [@nitya](https://twitter.com/nitya)_ |
[![Introduktionsvideo](../../../../translated_images/sv/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
[![Intro Video](../../../../translated_images/sv/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
Ä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.
## [Förkunskapstest](https://ff-quizzes.netlify.app/en/ds/quiz/12)
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:
```python
start_date = "Jan 1, 2020"
@ -63,48 +65,47 @@ idx = pd.date_range(start_date,end_date)
print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Tidsserieplott](../../../../translated_images/sv/timeseries-1.80de678ab1cf727e.webp)
```
![Tidsserie-plot](../../../../translated_images/sv/timeseries-1.80de678ab1cf727e.webp)
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:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
När vi adderar två Series får vi det totala antalet:
```
När vi adderar två serier får vi totalt antal:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Tidsserieplott](../../../../translated_images/sv/timeseries-2.aae51d575c55181c.webp)
```
![Tidsserie-plot](../../../../translated_images/sv/timeseries-2.aae51d575c55181c.webp)
> **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:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Månadsvisa tidsseriegenomsnitt](../../../../translated_images/sv/timeseries-3.f3147cbc8c624881.webp)
```
![Månadsvisa tidsseriemedelvärden](../../../../translated_images/sv/timeseries-3.f3147cbc8c624881.webp)
### DataFrame
En DataFrame är i huvudsak en samling av Series med samma index. Vi kan kombinera flera Series till en DataFrame:
En DataFrame är i huvudsak en samling av serier med samma index. Vi kan kombinera flera serier ihop till en 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])
```
Detta skapar en horisontell tabell som denna:
```
Detta skapar en horisontell tabell som denna:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Vi kan också använda Series som kolumner och specificera kolumnnamn med hjälp av en ordbok:
Vi kan även använda Series som kolumner och specificera kolumnnamn med hjälp av en ordbok:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
```
Detta ger oss en tabell som denna:
| | A | B |
@ -119,39 +120,39 @@ Detta ger oss en tabell som denna:
| 7 | 8 | very |
| 8 | 9 | much |
**Notera** att vi också kan få denna tabellayout genom att transponera den föregående tabellen, t.ex. genom att skriva
**Observera** att vi också kan få denna tabellayout genom att transponera den tidigare tabellen, t.ex. genom att skriva
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
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.
df = pd.DataFrame([a,b]).T.rename(columns={ 0 : 'A', 1 : 'B' })
```
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'] < 5 else "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'] < 5 annars "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 `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`:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
```
Detta ger oss följande tabell:
| LenB | Count | Mean |
@ -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.
![COVID-spridning](../../../../translated_images/sv/covidspread.f3d131c4f1d260ab.webp)
![COVID Spread](../../../../translated_images/sv/covidspread.f3d131c4f1d260ab.webp)
> 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.
![Covid Medicinsk Behandling](../../../../translated_images/sv/covidtreat.b2ba59f57ca45fbc.webp)
![Covid Medical Treatment](../../../../translated_images/sv/covidtreat.b2ba59f57ca45fbc.webp)
## 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.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -96,8 +96,8 @@
"language_code": "th"
},
"2-Working-With-Data/07-python/README.md": {
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:44:39+00:00",
"original_hash": "fb29e3e0be486fe8f15d50bdade79eb1",
"translation_date": "2026-07-17T18:07:50+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "th"
},

@ -1,59 +1,62 @@
# การทำงานกับข้อมูล: Python และ Pandas Library
# การทำงานกับข้อมูล: Python และไลบรารี Pandas
| ![ Sketchnote โดย [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| การทำงานกับ Python - _Sketchnote โดย [@nitya](https://twitter.com/nitya)_ |
| การทำงานกับ Python - _Sketchnote โดย [@nitya](https://twitter.com/nitya)_ |
[![วิดีโอแนะนำ](../../../../translated_images/th/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
[![Intro Video](../../../../translated_images/th/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
แม้ว่าฐานข้อมูลจะเป็นวิธีที่มีประสิทธิภาพในการจัดเก็บข้อมูลและเรียกใช้ข้อมูลด้วยภาษาคำสั่ง แต่การเขียนโปรแกรมเพื่อจัดการข้อมูลด้วยตัวเองถือเป็นวิธีที่ยืดหยุ่นที่สุด ในหลายกรณี การใช้คำสั่งฐานข้อมูลอาจมีประสิทธิภาพมากกว่า แต่ในบางกรณีที่ต้องการการประมวลผลข้อมูลที่ซับซ้อนมากขึ้น SQL อาจไม่สามารถทำได้ง่าย ๆ การประมวลผลข้อมูลสามารถเขียนได้ในทุกภาษาโปรแกรม แต่มีบางภาษาที่เหมาะสมกับการทำงานกับข้อมูลมากกว่า นักวิทยาศาสตร์ข้อมูลมักนิยมใช้ภาษาต่อไปนี้:
แม้ว่าฐานข้อมูลจะมีวิธีที่มีประสิทธิภาพมากในการจัดเก็บข้อมูลและสืบค้นข้อมูลโดยใช้ภาษาคิวรี วิธีที่ยืดหยุ่นที่สุดสำหรับการประมวลผลข้อมูลคือการเขียนโปรแกรมของคุณเองเพื่อจัดการข้อมูล ในหลายกรณี การใช้คิวรีฐานข้อมูลจะเป็นวิธีที่มีประสิทธิภาพกว่า อย่างไรก็ตามในบางกรณีที่ต้องการการประมวลผลข้อมูลที่ซับซ้อนมากขึ้น จะไม่สามารถทำได้ง่าย ๆ ด้วย SQL
การประมวลผลข้อมูลสามารถเขียนโปรแกรมได้ในทุกภาษาโปรแกรม แต่มีบางภาษาที่อยู่ในระดับสูงกว่าเกี่ยวกับการทำงานกับข้อมูล นักวิทยาศาสตร์ข้อมูลมักจะชอบใช้หนึ่งในภาษาต่อไปนี้:
* **[Python](https://www.python.org/)** เป็นภาษาการเขียนโปรแกรมทั่วไปที่มักถูกมองว่าเป็นตัวเลือกที่ดีที่สุดสำหรับผู้เริ่มต้นเนื่องจากความเรียบง่าย Python มีไลบรารีเพิ่มเติมมากมายที่ช่วยแก้ปัญหาต่าง ๆ เช่น การดึงข้อมูลจาก ZIP archive หรือการแปลงภาพเป็นสีเทา นอกจากการวิเคราะห์ข้อมูลแล้ว Python ยังถูกใช้ในงานพัฒนาเว็บไซต์อีกด้วย
* **[R](https://www.r-project.org/)** เป็นเครื่องมือดั้งเดิมที่พัฒนาขึ้นเพื่อการประมวลผลข้อมูลเชิงสถิติ R มีคลังไลบรารีขนาดใหญ่ (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 อย่างลึกซึ้งขึ้น คุณสามารถอ้างอิงแหล่งข้อมูลต่อไปนี้:
* [เรียนรู้ 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)
* [เรียนรู้ Python อย่างสนุกด้วยกราฟิกเต่าและแฟร็กทัล](https://github.com/shwars/pycourse) - หลักสูตรเบื้องต้นใน GitHub สำหรับการเขียนโปรแกรม Python
* [ก้าวแรกกับ 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 ที่มีประโยชน์สำหรับงานทั่วไปมากมาย
## [แบบทดสอบก่อนเรียน](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## ข้อมูลแบบตารางและ Dataframes
## ข้อมูลตารางและ Dataframes
คุณเคยพบข้อมูลแบบตารางเมื่อเราพูดถึงฐานข้อมูลเชิงสัมพันธ์ เมื่อคุณมีข้อมูลจำนวนมากและข้อมูลนั้นถูกจัดเก็บในหลายตารางที่เชื่อมโยงกัน การใช้ SQL ในการทำงานกับข้อมูลนั้นถือว่ามีเหตุผล อย่างไรก็ตาม มีหลายกรณีที่เรามีตารางข้อมูลและต้องการเข้าใจหรือวิเคราะห์ข้อมูล เช่น การกระจายตัว ความสัมพันธ์ระหว่างค่า ฯลฯ ในการวิเคราะห์ข้อมูล มีหลายกรณีที่เราต้องทำการแปลงข้อมูลต้นฉบับตามด้วยการสร้างภาพ ทั้งสองขั้นตอนนี้สามารถทำได้ง่าย ๆ ด้วย Python
คุณเคยพบข้อมูลตารางแล้วเมื่อตอนเราพูดถึงฐานข้อมูลเชิงสัมพันธ์ เมื่อคุณมีข้อมูลมากและเก็บอยู่ในหลายตารางเชื่อมโยงกัน การใช้ SQL สำหรับทำงานกับข้อมูลนั้นย่อมสมเหตุสมผลอย่างแน่นอน อย่างไรก็ตาม มีหลายกรณีที่เรามีตารางข้อมูล และต้องการได้ **ความเข้าใจ** หรือ **ข้อมูลเชิงลึก** เกี่ยวกับข้อมูลนี้ เช่น การแจกแจงความถี่ ความสัมพันธ์ระหว่างค่า เป็นต้น ในวิทยาศาสตร์ข้อมูล มีหลายกรณีที่เราต้องทำการแปลงข้อมูลต้นฉบับ และตามด้วยการแสดงข้อมูลทั้งสองขั้นตอนนี้สามารถทำได้ง่าย ๆ ด้วย Python
มีไลบรารีที่มีประโยชน์ที่สุดสองตัวใน Python ที่ช่วยคุณจัดการกับข้อมูลแบบตาราง:
* **[Pandas](https://pandas.pydata.org/)** ช่วยให้คุณจัดการกับ **Dataframes** ซึ่งคล้ายกับตารางเชิงสัมพันธ์ คุณสามารถมีคอลัมน์ที่มีชื่อ และดำเนินการต่าง ๆ กับแถว คอลัมน์ และ Dataframes โดยรวม
* **[Numpy](https://numpy.org/)** เป็นไลบรารีสำหรับการทำงานกับ **tensors** หรือ **arrays** หลายมิติ Array มีค่าที่มีประเภทเดียวกัน และง่ายกว่า Dataframe แต่มีการดำเนินการทางคณิตศาสตร์มากกว่า และสร้าง overhead น้อยกว่า
มีไลบรารีใน Python สองตัวที่มีประโยชน์มากสำหรับช่วยจัดการข้อมูลตาราง:
* **[Pandas](https://pandas.pydata.org/)** ช่วยให้คุณจัดการสิ่งที่เรียกว่า **Dataframes** ซึ่งเปรียบได้กับตารางเชิงสัมพันธ์ คุณสามารถมีชื่อคอลัมน์ และทำงานต่าง ๆ กับแถว คอลัมน์ และ Dataframes ได้อย่างทั่วไป
* **[Numpy](https://numpy.org/)** เป็นไลบรารีสำหรับทำงานกับ **เทนเซอร์** หรือ **arrays** หลายมิติ ซึ่งมีค่าในประเภทเดียวกันทั้งหมด และมันง่ายกว่า DataFrame แต่มีฟังก์ชันทางคณิตศาสตร์มากกว่าและลดภาระการประมวลผล
นอกจากนี้ยังมีไลบรารีอื่น ๆ ที่คุณควรรู้จัก:
* **[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 ... # 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) หรืออาจมีโครงสร้างซับซ้อน เช่น ช่วงเวลาของวันที่
> **หมายเหตุ**: มีโค้ด Pandas เบื้องต้นใน notebook ที่แนบมา [`notebook.ipynb`](notebook.ipynb) เราเพียงแค่สรุปตัวอย่างบางส่วนที่นี่ และคุณสามารถตรวจสอบ notebook ฉบับเต็มได้
> **หมายเหตุ**: มีโค้ดเบื้องต้นเกี่ยวกับ Pandas ในสมุดจด [`notebook.ipynb`](notebook.ipynb) ที่แนบมาด้วย เราแค่ยกตัวอย่างบางส่วนที่นี่ และคุณยินดีตรวจสอบสมุดจดฉบับเต็ม
ลองพิจารณาตัวอย่าง: เราต้องการวิเคราะห์ยอดขายของร้านไอศกรีมของเรา ลองสร้าง series ของตัวเลขยอดขาย (จำนวนสินค้าที่ขายได้ในแต่ละวัน) สำหรับช่วงเวลาหนึ่ง:
ลองพิจารณาตัวอย่าง: เราต้องการวิเคราะห์ยอดขายร้านไอศกรีมของเรา มาสร้าง series ของจำนวนยอดขาย (จำนวนชิ้นที่ขายได้แต่ละวัน) ในช่วงเวลาหนึ่ง:
```python
start_date = "Jan 1, 2020"
@ -65,20 +68,20 @@ items_sold.plot()
```
![Time Series Plot](../../../../translated_images/th/timeseries-1.80de678ab1cf727e.webp)
สมมติว่าในแต่ละสัปดาห์เราจัดงานเลี้ยงสำหรับเพื่อน ๆ และนำไอศกรีมเพิ่มอีก 10 แพ็คสำหรับงานเลี้ยง เราสามารถสร้าง series อีกตัวที่มี index เป็นสัปดาห์เพื่อแสดงสิ่งนี้:
สมมติว่าแต่ละสัปดาห์เราจัดงานปาร์ตี้ให้เพื่อน ๆ และเตรียมไอศกรีมเพิ่ม 10 แพ็คเพื่อใช้ในงาน เราสามารถสร้างอีก series หนึ่ง โดย index เป็นสัปดาห์ เพื่อแสดงสิ่งนี้:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
เมื่อเราบวก series สองตัวเข้าด้วยกัน เราจะได้ยอดรวม:
เมื่อเราบวกสอง series เข้าด้วยกัน เราจะได้จำนวนรวม:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Time Series Plot](../../../../translated_images/th/timeseries-2.aae51d575c55181c.webp)
> **หมายเหตุ** เราไม่ได้ใช้ 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))
df = pd.DataFrame([a,b])
```
สิ่งนี้จะสร้างตารางแนวนอนดังนี้:
ซึ่งจะสร้างตารางแนวนอนแบบนี้:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
เรายังสามารถใช้ Series เป็นคอลัมน์ และระบุชื่อคอลัมน์โดยใช้ dictionary:
เรายังสามารถใช้ Series เป็นคอลัมน์ และระบุชื่อคอลัมน์โดยใช้พจนานุกรม:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
สิ่งนี้จะให้ตารางดังนี้:
ซึ่งจะได้ตารางแบบนี้:
| | A | B |
| --- | --- | ------ |
@ -117,39 +120,39 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**หมายเหตุ** เราสามารถได้รูปแบบตารางนี้โดยการ transposing ตารางก่อนหน้า เช่น โดยการเขียน
**หมายเหตุ** เรายังสามารถได้เค้าโครงตารางนี้โดยการสลับแถวและคอลัมน์ของตารางก่อนหน้า เช่น โดยการเขียน
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
df = pd.DataFrame([a,b]).T.rename(columns={ 0 : 'A', 1 : 'B' })
```
ที่นี่ `.T` หมายถึงการดำเนินการ transposing 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` จะคืนค่า boolean series ซึ่งระบุว่าแสดงออกเป็น `True` หรือ `False` สำหรับแต่ละองค์ประกอบของ series ดั้งเดิม `df['A']` เมื่อ boolean series ถูกใช้เป็น index มันจะคืนค่าชุดย่อยของแถวใน DataFrame ดังนั้นจึงไม่สามารถใช้การแสดงออก boolean ของ Python ได้ เช่น การเขียน `df[df['A']>5 and df['A']<7]` จะผิด แทนที่จะใช้การดำเนินการพิเศษ `&` บน boolean series โดยการเขีย`df[(df['A']>5) & (df['A']<7)]` (*วงเล็บมีความสำคัญที่นี่*)
> **หมายเหตุ** วิธีการกรองคือ การแสดง `df['A']<5` จะส่งคืน series บูลีนซึ่งระบุว่าเงื่อนไขเป็น `True` หรือ `False` สำหรับแต่ละสมาชิกของ `df['A']` เมื่อใช้ series บูลีนเหล่านี้เป็น index จะส่งคืนเฉพาะแถวที่เงื่อนไขเป็นจริง ดังนั้นจึงไม่สามารถใช้การแสดงเงื่อนไขบูลีน Python ธรรมดาได้ เช่น การเขียน `df[df['A']>5 and df['A']<7]` จะผิด ถูกต้องคือใช้การดำเนินการ `&` บน series บูลีนเช่`df[(df['A']>5) & (df['A']<7)]` (*วงเล็บสำคัญ*)
**การสร้างคอลัมน์ใหม่ที่คำนวณได้** เราสามารถสร้างคอลัมน์ใหม่ที่คำนวณได้สำหรับ DataFrame ของเราได้อย่างง่ายดายโดยใช้การแสดงออกที่เข้าใจง่าย เช่นนี้:
**การสร้างคอลัมน์ที่คำนวณได้ใหม่** เราสามารถสร้างคอลัมน์คำนวณใหม่ใน DataFrame ได้ง่าย ๆ ด้วยนิพจน์ที่เข้าใจง่ายเช่นนี้:
```python
df['DivA'] = df['A']-df['A'].mean()
```
ตัวอย่างนี้คำนวณ divergence ของ A จากค่าเฉลี่ยของมัน สิ่งที่เกิดขึ้นจริงคือเรากำลังคำนวณ series และจากนั้นกำหนด series นี้ให้กับด้านซ้ายมือ สร้างคอลัมน์ใหม่ ดังนั้น เราไม่สามารถใช้การดำเนินการใด ๆ ที่ไม่เข้ากันกับ series ตัวอย่างเช่น โค้ดด้านล่างผิด:
ตัวอย่างนี้คำนวณความแตกต่างของ A จากค่าเฉลี่ย จริง ๆ แล้วเรากำลังคำนวณ series หนึ่ง แล้วกำหนด series นี้ให้กับด้านซ้าย ซึ่งสร้างคอลัมน์ใหม่ ดังนั้นจึงไม่สามารถใช้การดำเนินการที่ไม่เข้ากันกับ series ได้ เช่น โค้ดด้านล่างนี้ผิด:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
# โค้ดผิด -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <-
```
ตัวอย่างหลัง แม้ว่าจะถูกต้องตามไวยากรณ์ แต่ให้ผลลัพธ์ที่ผิด เพราะมันกำหนดความยาวของ series `B` ให้กับค่าทั้งหมดในคอลัมน์ และไม่ใช่ความยาวขององค์ประกอบแต่ละตัวตามที่เราตั้งใจไว้
ตัวอย่างหลังถึงแม้จะถูกไวยากรณ์ แต่ให้ผลลัพธ์ผิดเพราะมันกำหนดความยาวของ series `B` ให้กับค่าทุกค่าในคอลัมน์ ไม่ใช่ความยาวของสมาชิกแต่ละตัวอย่างที่เราต้องการ
หากเราต้องการคำนวณการแสดงออกที่ซับซ้อนเช่นนี้ เราสามารถใช้ฟังก์ชัน `apply` ตัวอย่างสุดท้ายสามารถเขียนได้ดังนี้:
หากเราต้องการคำนวณนิพจน์ซับซ้อนแบบนี้ เราสามารถใช้ฟังก์ชัน `apply` ตัวอย่างล่าสุดเขียนได้ดังนี้:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# หรือ
df['LenB'] = df['B'].apply(len)
```
หลังจากการดำเนินการข้างต้น เราจะได้ DataFrame ดังนี้:
หลังจากดำเนินการดังกล่าว เราจะได้ DataFrame ดังนี้:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
@ -163,22 +166,22 @@ df['LenB'] = df['B'].apply(len)
| 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 table* ใน Excel สมมติว่าเราต้องการคำนวณค่าเฉลี่ยของคอลัมน์ `A` สำหรับแต่ละหมายเลขของ `LenB` เราสามารถจัดกลุ่ม DataFrame โด`LenB` และเรียกใช้ `mean`:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
หากเราต้องการคำนวณค่าเฉลี่ยและจำนวนองค์ประกอบในกลุ่ม เราสามารถใช้ฟังก์ชัน `aggregate` ที่ซับซ้อนกว่า:
หากต้องการคำนวณค่าเฉลี่ยและจำนวนสมาชิกในกลุ่ม เราสามารถใช้ฟังก์ชัน `aggregate` ที่ซับซ้อนขึ้น:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
สิ่งนี้จะให้ตารางดังนี้:
จะได้ตารางดังนี้:
| LenB | Count | Mean |
| ---- | ----- | -------- |
@ -188,87 +191,90 @@ df.groupby(by='LenB') \
| 4 | 3 | 6.333333 |
| 6 | 2 | 6.000000 |
### การดึงข้อมูล
เราได้เห็นแล้วว่าการสร้าง 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 ออกมาในรูปแบบตารางที่ดูดี
นักวิทยาศาสตร์ข้อมูลมักจะต้องสำรวจข้อมูล ดังนั้นจึงสำคัญที่จะสามารถมองเห็นข้อมูลได้ เมื่อ 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 Repository นี้](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/) ชุดข้อมูลนี้มีอยู่ใน [GitHub Repository นี้](https://github.com/CSSEGISandData/COVID-19)
เนื่องจากเราต้องการแสดงวิธีการจัดการกับข้อมูล เราขอเชิญคุณเปิด [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) และอ่านตั้งแต่ต้นจนจบ คุณยังสามารถรันเซลล์ และทำบาง Challenge ที่เราได้ทิ้งไว้ให้คุณในตอนท้า
เนื่องจากเราต้องการสาธิตวิธีจัดการข้อมูล เราขอเชิญคุณเปิด [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) และอ่านจากบนลงล่าง คุณยังสามารถรันเซลล์ และทำความท้าทายที่เราทิ้งไว้ให้คุณที่ท้ายได้ด้ว
![COVID Spread](../../../../translated_images/th/covidspread.f3d131c4f1d260ab.webp)
> หากคุณไม่ทราบวิธีการรันโค้ดใน Jupyter Notebook ลองดู [บทความนี้](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)
> หากคุณไม่ทราบวิธีรันโค้ดใน Jupyter Notebook กรุณาดูที่ [บทความนี้](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)
## การทำงานกับข้อมูลที่ไม่มีโครงสร้าง
แม้ว่าข้อมูลมักจะมาในรูปแบบตาราง ในบางกรณีเราจำเป็นต้องจัดการกับข้อมูลที่มีโครงสร้างน้อยกว่า เช่น ข้อความหรือภาพ ในกรณีนี้ เพื่อใช้เทคนิคการประมวลผลข้อมูลที่เราได้เห็นข้างต้น เราจำเป็นต้อง **ดึง** ข้อมูลที่มีโครงสร้างออกมา ตัวอย่างเช่น:
ขณะที่ข้อมูลมักมาในรูปแบบตาราง บางกรณีเราต้องจัดการกับข้อมูลที่มีโครงสร้างน้อยกว่า เช่น ข้อความหรือภาพ ในกรณีนี้ เพื่อใช้เทคนิคประมวลผลข้อมูลที่เราเห็นข้างต้น เราต้อง **ดึง** ข้อมูลที่มีโครงสร้างออกมา นี่คือตัวอย่างบางส่วน:
* การดึงคำสำคัญจากข้อความ และดูว่าคำสำคัญเหล่านั้นปรากฏบ่อยแค่ไหน
* การใช้เครือข่ายประสาทเทียมเพื่อดึงข้อมูลเกี่ยวกับวัตถุนภาพ
* การรับข้อมูลเกี่ยวกับอารมณ์ของผู้คนจากฟีดกล้องวิดีโอ
* การดึงคำสำคัญจากข้อความ และดูว่าคำสำคัญเหล่านั้นปรากฏบ่อยเพียงใด
* การใช้เครือข่ายประสาทเทียมเพื่อดึงข้อมูลเกี่ยวกับวัตถุนภาพ
* การได้ข้อมูลเกี่ยวกับอารมณ์ของผู้คนจากกล้องวิดีโอ
## 🚀 Challenge 2: การวิเคราะห์เอกสาร COVID
## 🚀 ความท้าทาย 2: การวิเคราะห์เอกสารเกี่ยวกับ COVID
ใน Challenge นี้ เราจะดำเนินการต่อในหัวข้อการระบาดของ COVID และมุ่งเน้นไปที่การประมวลผลเอกสารทางวิทยาศาสตร์เกี่ยวกับเรื่องนี้ มี [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) ที่มีเอกสารมากกว่า 7000 ฉบับ (ในขณะที่เขียน) เกี่ยวกับ COVID ซึ่งมีข้อมูลเมตาและบทคัดย่อ (และสำหรับประมาณครึ่งหนึ่งของเอกสารยังมีข้อความเต็มให้ด้วย)
ในความท้าทายนี้ เราจะดำเนินต่อหัวข้อเกี่ยวกับการระบาดของ COVID โดยมุ่งเน้นไปที่การประมวลผลเอกสารทางวิทยาศาสตร์เกี่ยวกับเรื่องนี้ มี [ชุดข้อมูล CORD-19](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) 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/) เราจะพูดถึงเวอร์ชันที่ทำให้ง่ายของการวิเคราะห์นี้
> **NOTE**: เราไม่ได้ให้สำเนาของชุดข้อมูลเป็นส่วนหนึ่งของ repository นี้ คุณอาจต้องดาวน์โหลดไฟล์ [`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) จาก [ชุดข้อมูลนี้บน 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) และอ่านตั้งแต่ต้นจนจบ คุณยังสามารถรันเซลล์ และทำบาง Challenge ที่เราได้ทิ้งไว้ให้คุณในตอนท้าย
เปิด [`notebook-papers.ipynb`](notebook-papers.ipynb) และอ่านจากบนลงล่าง คุณยังสามารถรันเซลล์ และทำความท้าทายที่เราทิ้งไว้ให้ที่ท้ายได้
![Covid Medical Treatment](../../../../translated_images/th/covidtreat.b2ba59f57ca45fbc.webp)
## การประมวลผลข้อมูลภาพ
เมื่อเร็วๆ นี้ โมเดล AI ที่ทรงพลังมากได้ถูกพัฒนาขึ้น ซึ่งช่วยให้เราเข้าใจภาพ มีหลายงานที่สามารถแก้ไขได้โดยใช้เครือข่ายประสาทเทียมที่ผ่านการฝึกอบรมล่วงหน้า หรือบริการคลาวด์ ตัวอย่างบางส่วนได้แก่:
เมื่อเร็ว ๆ นี้ มีการพัฒนาโมเดล AI ที่ทรงพลังซึ่งช่วยให้เราเข้าใจภาพได้ มีงานหลากหลายที่สามารถแก้ไขได้โดยการใช้เครือข่ายประสาทเทียมที่เทรนมาแล้ว หรือบริการบนคลาวด์ ตัวอย่างได้แก่:
* **Image Classification** ซึ่งสามารถช่วยคุณจัดหมวดหมู่ภาพให้เป็นหนึ่งในคลาสที่กำหนดไว้ล่วงหน้า คุณสามารถฝึกตัวจัดหมวดหมู่ภาพของคุณเองได้อย่างง่ายดายโดยใช้บริการ เช่น [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Object Detection** เพื่อตรวจจับวัตถุต่างๆ ในภาพ บริการ เช่น [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 Detection** รวมถึงการตรวจจับอายุ เพศ และอารมณ์ สิ่งนี้สามารถทำได้ผ่าน [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) และดังนั้นสามารถผนวกเข้ากับเวิร์กโฟลว์การสำรวจข้อมูลของคุณได้อย่างง่ายดาย
ตัวอย่างบางส่วนของการสำรวจข้อมูลจากแหล่งข้อมูลภาพ:
* ในบล็อกโพสต์ [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) เราสำรวจภาพถ่าย Instagram โดยพยายามทำความเข้าใจว่าอะไรทำให้ผู้คนกดไลค์ภาพถ่ายมากขึ้น เราเริ่มต้นด้วยการดึงข้อมูลจากภาพถ่ายให้ได้มากที่สุดโดยใช้ [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) เพื่อดึงอารมณ์ของผู้คนในภาพถ่ายจากงานต่างๆ เพื่อพยายามทำความเข้าใจว่าอะไรทำให้ผู้คนมีความสุข
นี่คือตัวอย่างของการสำรวจข้อมูลจากแหล่งข้อมูลภาพ:
* ในโพสต์บล็อก [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) เราสำรวจภาพถ่าย Instagram โดยพยายามเข้าใจว่าอะไรทำให้คนกดไลค์ภาพมากขึ้น เราเริ่มจากการดึงข้อมูลจากภาพให้มากที่สุดโดยใช้ [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 คุณสามารถดำเนินการทุกขั้นตอนที่เกี่ยวข้องกับการประมวลผลและการทำความเข้าใจข้อมูลได้ มันอาจเป็นวิธีที่ยืดหยุ่นที่สุดในการประมวลผลข้อมูล และนี่คือเหตุผลที่นักวิทยาศาสตร์ข้อมูลส่วนใหญ่ใช้ Python เป็นเครื่องมือหลัก การเรียนรู้ Python อย่างลึกซึ้งอาจเป็นความคิดที่ดีหากคุณจริงจังกับการเดินทางในสาย Data Science ของคุณ!
ไม่ว่าคุณจะมีข้อมูลที่มีโครงสร้างหรือไม่มีโครงสร้างแล้วก็ตาม ด้วย Python คุณสามารถทำทุกขั้นตอนที่เกี่ยวข้องกับการประมวลผลและความเข้าใจข้อมูลได้ นี่น่าจะเป็นวิธีที่ยืดหยุ่นที่สุดในการประมวลผลข้อมูล และนั่นคือเหตุผลที่นักวิทยาศาสตร์ข้อมูลส่วนใหญ่ใช้ Python เป็นเครื่องมือหลัก การเรียนรู้ Python อย่างลึกซึ้งเป็นความคิดที่ดีหากคุณจริงจังกับการเดินทางในสาขาวิทยาศาสตร์ข้อมูล!
## [แบบทดสอบหลังการบรรยาย](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)
**แหล่งข้อมูลออนไลน์**
* บทเรียน [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) อย่างเป็นทางการ
* [เอกสารเกี่ยวกับ Pandas Visualization](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* บทเรียนอย่างเป็นทางการ [10 minutes to 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](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)
## งานที่ได้รับมอบหมาย
## การบ้าน
[ทำการศึกษาข้อมูลเพิ่มเติมสำหรับ Challenge ด้านบน](assignment.md)
[ทำการศึกษาข้อมูลอย่างละเอียดสำหรับความท้าทายข้างต้น](assignment.md)
## เครดิต
@ -276,5 +282,7 @@ Data Scientist มักต้องสำรวจข้อมูล ดัง
---
**ข้อจำกัดความรับผิดชอบ**:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่แม่นยำ เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษาจากผู้เชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดซึ่งเกิดจากการใช้การแปลนี้
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ปฏิเสธความรับผิดชอบ**:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) ขณะที่เราพยายามให้ความถูกต้อง โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางควรถูกพิจารณาเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ แนะนำให้ใช้การแปลโดยมนุษย์มืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดที่เกิดขึ้นจากการใช้การแปลนี้
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
Loading…
Cancel
Save