Amalan terbaik dipelajari daripada kesilapan, jadi di sini kami meringkaskan beberapa kesilapan paling biasa yang kami hadapi dan menyediakan kaedah, idea dan sumber tentang cara terbaik untuk menyelesaikannya.
Ini bukan isu pengekodan sendiri, tetapi saya masih fikir ia adalah sangat baik untuk mengasingkan persekitaran untuk setiap jenis amalan projek.
Mengapa menggunakan persekitaran khusus untuk setiap projek?
Sebab pertama ialah masalah pengurusan pakej Python sendiri. Kami mahu meminimumkan konflik antara pakej dan versi.
Sebab lain ialah kod dan kebergantungan kami boleh digunakan dengan mudah ke mana-mana lokasi
Menggunakan persekitaran maya boleh bermula dari Anaconda atau Pipenv. Jika anda ingin pergi lebih dalam maka Docker ialah pilihan pertama.
Buku nota bagus untuk tujuan pendidikan dan melakukan beberapa kerja analisis yang cepat dan kompleks, tetapi ia tidak berfungsi sebagai IDE yang baik.
IDE yang baik ialah senjata sebenar apabila ia melibatkan tugas sains data dan boleh meningkatkan kecekapan kerja anda dengan banyak.
Buku nota bagus untuk melakukan percubaan dan memudahkan untuk menunjukkan hasilnya kepada orang lain. Tetapi ia terdedah kepada ralat, dan apabila ia datang untuk melaksanakan projek jangka panjang, kolaboratif dan boleh digunakan, anda lebih baik menggunakan IDE seperti VScode, Pycharm, Spyder, dll.
Masalah terbesar dengan laluan mutlak ialah ia tidak boleh digunakan dengan mudah Cara utama untuk menyelesaikan masalah ini ialah menetapkan direktori kerja kepada projek direktori akar dan jangan Projek mengandungi fail di luar direktori projek dan menggunakan laluan relatif untuk semua laluan dalam kod.
import pandas as pd import numpy as np import os #### 错误的方式 ##### excel_path1 = "C:\Users\abdelilah\Desktop\mysheet1.xlsx" excel_path2 = "C:\Users\abdelilah\Desktop\mysheet2.xlsx" mydf1 = pd.read_excel(excel_path1) mydf2 = pd.read_excel(excel_path2) #### 正确的方式 #### DATA_DIR = "data" #将要读取的文件复制到data目录 crime06_filename = "CrimeOneYearofData_2006.xlsx" crime07_filename = "CrimeOneYearofData_2007.xlsx" crime06_df = pd.read_excel(os.path.join(DATA_DIR, crime06_filename)) crime07_df = pd.read_excel(os.path.join(DATA_DIR, crime07_filename))
Apabila kod kami dapat dijalankan tetapi menghasilkan mesej amaran yang pelik, kami gembira akhirnya mendapatkan kod tersebut untuk dijalankan dan menerima output yang bermakna. Tetapi adakah kita perlu menangani amaran ini?
Pertama sekali, amaran bukanlah ralat itu sendiri, tetapi ia adalah peringatan tentang kemungkinan ralat atau masalah. Amaran muncul apabila sesuatu dalam kod anda berjaya berfungsi tetapi mungkin tidak seperti yang dimaksudkan.
Amaran yang paling biasa saya hadapi ialah "SettingwithCopyWarning" dan "DeprecationWarning" Panda.
Sebab terbesar SettingwithCopyWarning ialah amaran yang berlaku apabila Pandas mengesan tugasan berantai (Tugasan Berantai Kita harus mengelak daripada memberikan nilai kepada hasil indeks berantai, kerana operasi ini mungkin melaporkan amaran atau tidak). .
DeprecationWarning biasanya menunjukkan bahawa Panda telah menamatkan beberapa fungsi dan kod anda akan rosak apabila menggunakan versi yang lebih baru.
Nasihat di sini adalah untuk tidak menangani semua amaran, tetapi anda mesti memahami sebab untuk semua amaran, mengetahui amaran yang boleh diabaikan dalam projek tertentu, dan kejadian amaran tersebut akan menjejaskan keputusannya mempunyai kesan dan harus dielakkan.
Pemahaman senarai ialah ciri ular sawa yang sangat berkuasa. Banyak untuk gelung boleh digantikan dengan pemahaman senarai yang lebih mudah dibaca, lebih Pythonic dan lebih pantas.
Anda boleh melihat di bawah contoh kod yang direka untuk membaca fail CSV dalam direktori. Seperti yang anda lihat, Tim mudah dikekalkan apabila menggunakan pemahaman senarai.
import pandas as pd import os DATA_PATH = "data" filename_list = os.listdir(DATA_PATH) #### 不好的方法 ##### csv_list = [] for fileaname in filename_list: csv_list.append(pd.read_csv(os.path.join(DATA_PATH, filename))) #### 建议 #### csv_list = [pd.read_csv(os.path.join(DATA_PATH, filename)) for filename in filename_list] list comprehensions csv_list = [pd.read_csv(os.path.join(DATA_PATH, filename)) for filename in filename_list if filename.endswith(".csv")]
Anotasi jenis (atau pembayang taip) ialah cara untuk menetapkan jenis kepada pembolehubah. Apabila IDE menggesa IntelliSense, ia boleh memberikan kami jenis pembolehubah/parameter penunjuk. Ini bukan sahaja dapat meningkatkan kelajuan pembangunan kami, tetapi juga banyak membantu kami dalam membaca kod
def mystery_combine(a, b, times): return (a + b) * times
Jika ditulis seperti ini, kami tidak tahu jenis a, b dan masa langsung
def mystery_combine(a: str, b: str, times: int) -> str: return (a + b) * times
Tetapi dengan penambahan anotasi jenis, kita tahu bahawa a dan b ialah rentetan dan masa ialah integer
Perlu diingatkan bahawa python memperkenalkan anotasi jenis dalam versi 3.5, dan python tidak akan dilaksanakan Apabila menyemak anotasi jenis, ia hanya menyediakan alat semakan jenis statik yang mudah untuk IDE melakukan semakan jenis statik pada bahasa dinamik untuk mengelakkan beberapa kemungkinan ralat.
Perantaian kaedah ialah ciri hebat panda, tetapi jika terdapat banyak operasi yang disertakan dalam satu baris, kod itu mungkin tidak boleh dibaca.
Helah untuk menjadikan pendekatan ini lebih mudah ialah meletakkan ungkapan dalam kurungan, jadi anda boleh menggunakan satu baris untuk setiap komponen ungkapan.
var_list = ["clicks", "time_spent"] var_list_Q = [varname + "_Q" for varname in var_list] #不可读的方法 df_Q = df.groupby("id").rolling(window=3, min_periods=1, on="yearmonth[var_list].mean().reset_index().rename(columns=dict(zip(var_list, var_list_Q))) #可读性强的方法 df_Q = ( df .groupby("id") .rolling(window=3, min_periods=1, on="yearmonth")[var_list] .mean() .reset_index() .rename(columns=dict(zip(var_list, var_list_Q))))
Apabila anda mula-mula memulakan pengaturcaraan dalam Python, kod itu mungkin kasar dan tidak boleh dibaca Ini kerana kami tidak mempunyai peraturan reka bentuk kami sendiri untuk diikuti. Kod saya kelihatan lebih baik. Memang susah dan susah untuk mereka sendiri peraturan sedemikian dan memerlukan banyak latihan Nasib baik, Python telah menetapkan peraturan secara rasmi: PEP, yang merupakan panduan gaya rasmi Python.
Walaupun peraturan PEP banyak dan menyusahkan, kita boleh mengabaikan beberapa peraturan PEP, tetapi kita boleh menggunakannya dalam 90% kod.
Adakah anda mahu meningkatkan produktiviti anda dengan ketara dalam pengekodan? Mulakan dengan Coding Assist, yang membantu dengan pelengkapan automatik yang bijak, membuka dokumen dan memberikan cadangan untuk menambah baik kod anda.
pylance, Kite, tabnine, dan copilot semuanya adalah pilihan yang sangat baik.
Atas ialah kandungan terperinci Sembilan kesilapan biasa yang dilakukan saintis data apabila menggunakan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!