Pada artikel ini, kita akan membahas dasar-dasar Python. Kami semakin dekat dan dekat dengan tujuan, secara umum, kami akan segera mulai bekerja dengan perpustakaan utama untuk Ilmu Data dan akan menggunakan TensorFlow (untuk menulis dan menggunakan jaringan saraf, Anda akan memahami Deep Learning).
Instalasi
Python dapat diunduh dari python.org. Namun, jika belum diinstal, maka sebagai gantinya
Saya merekomendasikan paket distribusi Anaconda, yang sudah mencakup sebagian besar perpustakaan yang diperlukan untuk bekerja di bidang ilmu data.
Jika Anda tidak menggunakan distribusi Anaconda, maka pastikan untuk menginstal manajer paket pip, yang membuatnya mudah untuk menginstal paket pihak ketiga, karena kami akan memerlukan beberapa di antaranya. Anda juga perlu menginstal shell IPython interaktif yang lebih ramah pengguna. Perlu diingat bahwa distribusi Anaconda dilengkapi dengan pip dan IPython.
Ruang putih
Banyak bahasa pemrograman menggunakan blok kode yang membedakan.
kawat gigi. Indentasi digunakan dalam Python:
Ini membuat kode mudah dibaca, tetapi pada saat yang sama membuatnya mengikuti pemformatan. Ruang di dalam tanda kurung dan tanda kurung diabaikan, yang membuatnya lebih mudah untuk menulis ekspresi verbose:
dan mudah dibaca kode:
Untuk melanjutkan pernyataan, garis miring terbalik digunakan pada baris berikutnya, namun, catatan seperti itu jarang digunakan:
two_plus_three = 2 + \ 3
Memformat kode dengan spasi membuat sulit untuk menyalin dan menempelkan kode ke shell Python. Misalnya, mencoba menyalin kode berikut:
for i in [ 1, 2, 3, 4, 5] :
ke dalam shell Python standar akan melempar kesalahan:
karena untuk juru bahasa, string kosong menunjukkan akhir dari blok kode dengan for for.
IPython memiliki fungsi sulap "% paste" yang menempel dengan benar segala sesuatu di clipboard, termasuk spasi.
Modul (Mengimpor Perpustakaan)
Beberapa pustaka lingkungan pemrograman berbasis Python tidak dimuat secara default. Agar alat ini dapat digunakan, Anda harus mengimpor modul yang mengandungnya.
Salah satu pendekatan adalah dengan mengimpor modul itu sendiri:
import re my_regex = re.compile ("[0-9]+",re.I)
Berikut adalah nama modul yang berisi fungsi dan konstanta untuk bekerja dengan ekspresi reguler. Dengan mengimpor seluruh modul dengan cara ini, Anda dapat mengakses fungsi dengan awalan dengan ulang.
Jika sudah ada variabel dengan nama re dalam kode, maka Anda dapat menggunakan modul alias:
import re as regex my_regex = regex.compile("[0-9)+",regex.I)
Alias juga digunakan dalam kasus-kasus di mana modul yang diimpor memiliki nama yang rumit atau ketika modul sering mengakses modul.
Misalnya, ketika memvisualisasikan data berdasarkan modul
matplotlib , biasanya itu
gunakan alias standar berikut:
import matplotlib.pyplot as plt
Jika Anda perlu mendapatkan beberapa nilai spesifik dari modul, Anda dapat mengimpornya secara eksplisit dan menggunakannya tanpa batasan:
from collections import defaultdict , Counter lookup = defaultdict(int) my_counter = Counter()
Fungsi
Fungsi adalah aturan yang mengambil nol atau lebih input argumen dan mengembalikan hasil yang sesuai. Dalam Python, fungsi biasanya didefinisikan menggunakan pernyataan def:
def double() : """, , docstring, , . , 2""" return * 2
Fungsi dalam Python diperlakukan sebagai objek kelas satu. Ini berarti bahwa mereka dapat ditugaskan ke variabel dan diteruskan ke fungsi lain dengan cara yang sama seperti argumen lain:
Selain itu, Anda dapat dengan mudah membuat fungsi anonim pendek atau ekspresi lambda:
= apply_to_one(lambda : + 4)
Ekspresi Lambda dapat ditugaskan ke variabel. Namun, disarankan untuk menggunakan operator def:
another double = lmbd : 2 *
Selain itu, Anda bisa meneruskan argumen default ke parameter fungsi, yang harus ditentukan hanya ketika nilai selain dari standar diharapkan:
def my_print (message="oe " ): print (message ) my_print ( "pe")
Terkadang disarankan untuk menentukan argumen dengan nama:
Di masa depan, fungsi akan sangat sering digunakan.
Garis
String karakter (atau urutan karakter) di kedua sisi terbatas pada tanda kutip tunggal atau ganda (harus cocok):
single_quoted_string = ' '
Garis miring terbalik digunakan untuk menyandikan karakter khusus. Sebagai contoh:
tab_string = "\t"
Jika Anda memerlukan backslash itu sendiri, yang terjadi secara langsung
di nama direktori di sistem operasi Windows, lalu menggunakan r '"' Anda dapat membuat
string yang tidak diformat :
not_tab_string = r"\t"
Blok teks multi-baris dibuat menggunakan triple single (atau
dua kali lipat) kutipan:
multi_line_string = """ . """
Pengecualian
Ketika terjadi kesalahan, Python melempar pengecualian. Pengecualian yang tidak ditangani menyebabkan program berhenti secara tak terduga. Pengecualian ditangani menggunakan
pernyataan coba dan
kecuali :
try: print (0 / 0) except ZeroDivisionError : rint ( " ")
Meskipun dalam banyak bahasa pemrograman penggunaan pengecualian dianggap sebagai gaya pemrograman yang buruk, dalam Python tidak ada yang perlu dikhawatirkan jika digunakan untuk membuat kode lebih bersih, dan kadang-kadang kita akan melakukan hal itu.
Daftar
Mungkin struktur data paling penting dalam Python adalah daftar. Ini hanya koleksi yang dipesan (atau koleksi), mirip dengan array dalam bahasa pemrograman lain, tetapi dengan fungsionalitas tambahan.
integer_list = [1, 2, ]
Anda dapat mengatur nilai dan mengakses elemen ke-n dari daftar menggunakan tanda kurung:
= list(range (10))
Selain itu, tanda kurung siku digunakan untuk "memotong" daftar:
first_three = [:]
Python memiliki pernyataan ln yang memeriksa apakah suatu elemen termasuk dalam daftar:
1 ln [1, 2, 3]
Cek terdiri dari melihat semua elemen satu per satu, oleh karena itu layak digunakan hanya ketika diketahui pasti bahwa daftar kecil atau tidak peduli berapa lama waktu yang dibutuhkan untuk memeriksa.
Daftar mudah disatukan:
= [1, 2, 3] . extend ( [ 4, 5, 6] )
Jika Anda ingin membiarkan daftar x tidak berubah, maka Anda dapat menggunakan tambahan daftar:
= [1, 2, 3] = + [4, 5, 6]
Biasanya, satu elemen ditambahkan ke daftar dalam satu operasi:
= [1, 2, 3] x.append (0)
Sering kali nyaman untuk unzip daftar jika Anda tahu berapa banyak elemen di dalamnya:
, = [1, 2]
Jika jumlah elemen tidak sama di kedua sisi ekspresi, pesan kesalahan ValueError akan ditampilkan.
Untuk nilai yang dibuang, garis bawah biasanya digunakan:
_, = [1, 2]
Tuples
Tuples adalah sepupu daftar yang tidak berubah (atau tidak berubah).
Hampir semua yang dapat dilakukan dengan daftar tanpa membuat perubahan dapat dilakukan dengan tuple. Alih-alih kurung kotak, tupel dibuat dengan kurung bundar, atau mereka bisa melakukannya tanpa mereka sama sekali:
my_list = [1, 2]
Tuples menyediakan cara mudah untuk mengembalikan beberapa nilai dari fungsi:
Tuples (dan daftar) juga digunakan dalam banyak penugasan:
, = 1, 2
Kamus
Kamus atau daftar asosiatif adalah struktur data dasar lainnya.
Di dalamnya, nilai dikaitkan dengan kunci, yang memungkinkan Anda untuk dengan cepat mengambil nilai yang terkait dengan kunci tertentu:
empty_dict = {}
Nilai kunci dapat diakses menggunakan tanda kurung:
rigory_aleksee = grades[ "Grigoriy"]
Jika Anda mencoba meminta nilai yang tidak ada dalam kamus, Anda akan menerima pesan kesalahan KeyError:
try: kates_grade = grades [ "Kate "] except eyError: rint ( " ! " )
Anda dapat memeriksa kunci menggunakan operator di:
grigoriy_has_grade = "Grigoriy" in grades
Kamus memiliki metode get () yang, ketika mencari kunci yang hilang, alih-alih melempar pengecualian, mengembalikan nilai default:
grigoriy_grade = grades. get ( "Grigoriy ", 0)
Penetapan nilai kunci dilakukan menggunakan kurung sama:
grades [ "Tim" ] = 99
Kamus sering digunakan sebagai cara mudah untuk merepresentasikan struktur
data:
tweet = { "user" : " grinaleks", "text" : " - ", " retweet_count" : 100, "hashtags " : [ "# data", " #science", " #datascience " , " #awesome", "#yolo" ] }
Selain mencari kunci individual, Anda dapat menghubungi semua orang sekaligus:
tweet_keys = tweet.keys()
Kunci harus tidak berubah; khususnya, daftar tidak dapat digunakan sebagai kunci. Jika Anda memerlukan kunci komposit, maka lebih baik menggunakan tuple atau mencari cara untuk mengubah kunci menjadi string.
Kamus defaultdict
Biarkan dokumen perlu menghitung kata-kata. Solusi yang jelas untuk masalah ini adalah membuat kamus di mana kuncinya adalah kata-kata, dan nilainya adalah frekuensi kata (atau jumlah kemunculan kata dalam teks). Selama pemeriksaan kata, jika kata saat ini sudah ada di kamus, maka frekuensinya meningkat, dan jika tidak ada, ditambahkan ke kamus:
Selain itu, Anda dapat memanfaatkan metode yang disebut "lebih baik meminta maaf daripada izin" dan menangkap kesalahan ketika mencoba mengakses kunci yang hilang:
word_ counts = { } for word in document : try: word_counts [word] += 1 except eyError : word_counts [word] = 1
Trik ketiga adalah menggunakan metode get (), yang dengan anggun mengatasi situasi dengan kunci yang hilang:
word_counts = { } for word in document : previous_count = word_counts.get (word, 0) word_counts [word] = previous_count + 1
Semua teknik ini agak rumit, dan untuk alasan ini disarankan untuk menggunakan kamus defaultdict (yang juga disebut kamus dengan: nilai default). Itu terlihat seperti kamus biasa, kecuali satu fitur - ketika mencoba mengakses kunci yang tidak ada di dalamnya, pertama-tama menambahkan nilai untuk itu menggunakan fungsi tanpa argumen, yang disediakan ketika itu dibuat. Untuk menggunakan kamus default, Anda harus mengimpornya dari modul koleksi:
from collections import defaultdict word_counts = defaultdict(int)
Selain itu, penggunaan kamus default adalah penggunaan praktis ketika bekerja dengan daftar, kamus, dan bahkan dengan fungsi yang ditentukan pengguna:
dd_list = defaultdict (list)
Fitur-fitur ini akan diperlukan ketika kamus digunakan untuk "koleksi"
hasil untuk kunci tertentu dan bila perlu untuk menghindari duplikat
memeriksa keberadaan kunci dalam kamus.
Kamus Penghitung
Subkelas kamus counter mengubah urutan nilai menjadi objek seperti defaultdict (int), di mana kunci dipetakan ke frekuensi atau, lebih tepatnya, kunci ditampilkan (peta) dalam frekuensi.
Ini terutama akan digunakan saat membuat histogram:
from collections import Counter = Counter([0,1,2,0])
Fungsionalitasnya membuatnya cukup mudah untuk memecahkan masalah penghitungan frekuensi kata:
Kamus penghitung memiliki metode most_common (), yang sering berguna:
Banyak
Struktur data set atau set adalah kumpulan elemen yang tidak berurutan tanpa pengulangan:
s = set ()
Banyak yang akan digunakan karena dua alasan. Pertama, operasi dalam set sangat cepat. Jika Anda perlu memeriksa set elemen besar untuk memiliki urutan tertentu, maka struktur data set lebih cocok untuk ini daripada daftar:
Alasan kedua adalah untuk mendapatkan elemen unik dalam kumpulan data:
item_list = [1, 2, 3, 1, 2, 3]
Banyak yang akan digunakan jauh lebih jarang daripada kamus dan daftar.
Struktur kontrol
Seperti dalam kebanyakan bahasa pemrograman lain, tindakan dapat dilakukan dengan syarat menggunakan pernyataan if:
if 1 > 2: message " 1 2 . . . " elif 1 > 3: message "elif 'else if '" else: message = " , else "
Selain itu, Anda dapat menggunakan operator single-line triple if-then-else, yang terkadang akan digunakan nanti:
parity = "" if % 2 === else " "
Python memiliki lingkaran whlle:
= 0 while < 10: print (x, " 10") += 1
Namun, for loop akan lebih sering digunakan dengan operator in:
for in range (lO) : print (x, " 10" ) 51
Jika Anda memerlukan logika kontrol loop yang lebih kompleks, Anda dapat menggunakan operator
continue break: for 1n range (10) : 1f == 3: continue
Hasilnya, 0, 1, 2 dan 4 akan dicetak.
Sejati
Variabel Boolean dalam Python bekerja dengan cara yang sama seperti pada kebanyakan bahasa pemrograman lainnya, dengan hanya satu pengecualian - mereka dikapitalisasi:
one_is_less_than_two = 1 < 2
Untuk menunjukkan nilai tidak ada, objek Tidak ada khusus digunakan, yang sesuai dengan null dalam bahasa lain:
= None print (x == None )
Python dapat menggunakan nilai apa pun di mana tipe boolean Boolean diharapkan. Semua elemen berikut memiliki nilai Boolean dari False:
- Salah .
- Tidak ada
- set () (set):
- [] (daftar kosong);
- {} (kamus kosong);
Hampir semuanya dianggap benar. Ini membuatnya mudah digunakan jika pernyataan memeriksa daftar kosong. baris kosong, kamus kosong, dll. Kadang-kadang, bagaimanapun, ini menyebabkan kesalahan yang sulit dikenali, jika Anda tidak memperhitungkan hal-hal berikut:
s = some_function_that_returns_a_string ()
Inilah cara yang lebih mudah untuk melakukan hal yang sama:
first_char = s and s [0]
karena operator logis dan mengembalikan nilai kedua, jika yang pertama benar, dan nilai pertama, jika itu salah. Demikian pula, jika x dalam ekspresi berikut adalah angka, atau mungkin tidak ada, maka hasilnya entah bagaimana akan menjadi angka:
safe = or 0
Fungsi semua bawaan Python mengambil daftar dan mengembalikan True hanya ketika setiap item daftar benar, dan fungsi bawaan apa pun mengembalikan true ketika setidaknya satu elemen benar:
all ( [True, 1, { 3 }])