Rumah > pembangunan bahagian belakang > Tutorial Python > Sembilan kesilapan biasa yang dilakukan saintis data apabila menggunakan Python

Sembilan kesilapan biasa yang dilakukan saintis data apabila menggunakan Python

王林
Lepaskan: 2023-04-11 21:07:04
ke hadapan
1380 orang telah melayarinya

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.

Sembilan kesilapan biasa yang dilakukan saintis data apabila menggunakan Python

1 Tidak menggunakan persekitaran maya

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.

2. Penggunaan Terlalu Banyak Buku Nota Jupyter

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.

3. Gunakan laluan mutlak dan bukannya relatif

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))
Salin selepas log masuk

4. Tidak mengendalikan amaran

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.

5. Pemahaman senarai tidak digunakan (jarang digunakan)

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")]
Salin selepas log masuk

6. Jangan gunakan anotasi jenis

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
Salin selepas log masuk

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
Salin selepas log masuk

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.

7. Kod Panda tidak diseragamkan

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))))
Salin selepas log masuk

8 Kegagalan untuk mematuhi konvensyen PEP

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.

9. Anda tidak menggunakan alat bantuan pengekodan

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!

Label berkaitan:
sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan