Python for Data Science
315 subscribers
127 photos
16 videos
12 files
61 links
اطلاعات مفید جهت یادگیری پایتون برای علم داده
Download Telegram
⬛️ سلام بر کسی که جانش را در راه خدا فدا کرد تا مردم را از جهالت و سرگشتگی گمراهی نجات دهد.

▪️ اربعین حسینی تسلیت باد.
🔎 @py4ds
👍1
📗 #معرفی_کتاب
Effective Pandas
Matt Harrison

🔺کتاب Effective Pandas قطعا یکی از بهترین منابع یادگیری کتابخانه Pandas هستش

🔺این کتاب به دوستانی که قصد مسلط شدن به Pandas رو دارن توصیه میشه

🔎 @py4ds
🤩1
Effective_Pandas_Patterns_for_Data_Manipulation.pdf
38.1 MB
📗 Effective Pandas
Matt Harrison

🔎 @py4ds
🤩1
🔹 اگر تجربه کار با تکنولوژی‌هایی مثل #داکر یا #کوبرنتیز رو داشته باشید قطعاً با تحریم‌هایی مبنی بر اجازه پول(pull) کردن ایمیج ها از روی سرویس‌هایی مثل داکرهاب رو داشتید. یا مثلاً مطالعه داکیومنت بعضی ابزارها یا زبانهای برنامه نویسی!

🔺به نظرم آمریکا بهتره برای نشون دادن حسن نیت تحریم‌های اینچنینی رو برداره و اجازه دسترسی به سایتها رو برای ایران باز کنه. چون این مسئله عمدتاً چالش‌هایی رو برای افرادی از طیف توسعه‌دهنده‌ها ایجاد می‌کنه!

🔺توسعه دهندگان ایرانی برای دور زدن این تحریم‌ها عموما از سرویس‌هایی شبیه https://shecan.ir یا پروکسی کَش‌ها استفاده می‌کنن. اما خب یه جاهایی هم مشکل به همین راحتی حل نمیشه!

🔺نمونه سایت‌هایی که شامل این تحریم‌ها هستن کم نیست. سایتها به ظاهر ممکنه باز هم بشن اما امکان دانلود یا pull کردن برای IP ایران ندارن.

https://hub.docker.com/
https://kubernetes.io/

و سایت‌هایی که مربوط به زبانهای برنامه نویسی هستند مثل:
https://dash.plotly.com/
https://go.dev/doc/

🔺دوست دیگه‌ای می‌گفت بعضی سرویس‌ها حتی روی ip‌های ایران throttling IP فعال کرده‌ان و سرعت دانلود را تا حد زیادی کاهش دادن!

🔎 @py4ds
👍4
حدود یک ساعت مونده به انتشار رسمی پایتون 3.11
این رویداد از طریق این لینک یوتوب به صورت زنده پخش میشه!

ویژگی‌های خیلی خوب و جالبی به این نسخه اضافه شده و همچنین عملکردش نسبت به پایتون 3.10 بین ۱۰ تا ۶۰ درصد در موارد مختلف بهبود پیدا کرده.
با این تفاسیر این نسخه شروع یه فصل جدید در عمر این زبان برنامه‌نویسی خواهد بود.
به شخصه منتظر انتشار پایتون 3.12 و اوبونتو 24.04 هستم. اتفاقات باحال‌تری در راه هست...
ویژگی‌های پایتون جدید در یک نگاه:

+ Fine-grained error location in tracebacks.
+ ExceptionGroup and the new except* syntax to handle it.
+ A new module to parse TOML.
+ Atomic grouping and possessive quantifiers for regexes.
+ Significant performance improvements.
+ New Self type.
+ Variadic generics.
+ Data class transforms.

هر کدوم از موارد بالا به تنهایی جذاب و جالب هستن و نیاز به یه آموزش جداگانه دارن!

🔎 @py4ds
🔥1
بالاخره نسخه پایدار پایتون 3.11 منتشر شد.
به زودی مجموعه پست‌های کوتاهی در مورد برخی ویژگی‌های جدیدش براتون ارسال می‌کنم.

🔎 @py4ds
🔥1
🔺 اولین گام از مقایسه امکانات جدید پایتون 3.11 مقایسه در عملکرد اون هست.
🔹این نسخه از پایتون با استفاده از پروژه‌ی Faster CPython سرعت خیلی بهتری نسبت به نسخه قبل پیدا کرده(البته در مجموع بنیاد پایتون از نسخه 3.8 به بعد تمرکز اصلی خودش رو روی بهبود عملکرد گذاشته)

👨‍💻تصویر بالا نمونه‌ای از مقایسه عملکرد پایتون 3.11 با 3.10 هست که با استفاده از این پروژه‌ انجامش دادم.
توی پروژه فوق میتونید با در نظر گرفتن یه سری نکته هر نسخه‌ای رو با نسخه دیگه مقایسه کنید!

📊نتیجه‌ی این مقایسه بهبود حدود بیست درصدی رو نشون میده که با توجه به اجرا شدن در محیط داکر به نظر میرسه همون عدد رسمی ذکر شده(۲۵ درصد) درست هست و همونطور که در تصویر می‌بینید بعضی ماژولها بیش از ۵۰ درصد بهبود عملکرد دارن!

#py311

🔎 @py4ds
👍4
🔺 بهبود پیغام‌های خطا یکی از بهترین تغییرات در پایتون 3.11 هست.
💡همون طور که می‌بینید دقیقا به محلی از کد که در اون خطا رخ داده اشاره می‌کنه!
🔹نوشتن کدهای پایتونی با استفاده از عبارات(که ممکنه گاهی هم طولانی بشه) باعث شده بود که پیدا کردن محل دقیق خطا در یک عبارت قدری مشکل باشه که این مشکل با این تغییر حل شد!
سورس کد
#py311

🔎 @py4ds
👏1
🔺 ویژگی مهم بعدی برای کسانی که برنامه نویسی async انجام میدن خیلی به درد بخور هست.
👉 Exception Group

💡اگر کدی داشته باشید که به صورت async اجرا میشه و باید خطاهای به وجود اومده توی همه یا برخی از تردها رو مدیریت کنید این ویژگی خیلی بهتون کمک می‌کنه!
📌با این ویژگی میشه به صورت یکجا تمام خطاهای به وجود اومده از طریق مثلا asyncio.gather رو برگردوند!
📃 در این کد (با کامنت تابع خط ۳۹ و آن‌کامنت تابع خط ۳۵) چند تابع مختلف به صورت async (و مستقل از هم) اجرا شده و اونها هم خطا دادن؛ خطاهای Exception Group توی تصویر بالا نشون داده شده!

سوال: چطوری Exception Group رو هندل کنیم؟ آیا الگوی try-except جواب میده؟
❗️جواب: خیر! برای مدیریت Exception Group ها باید تمام except ها رو به صورت *except بنویسید!

🔹سورس این کد نمونه‌ای از مدیریت خطای Exception Group هست!
#py311

🔎 @py4ds
👏1
🔺ویژگی ‌add_note to Exceptions

تا حالا شده بخواید توی حالتی که خطا رو مدیریت می‌کنید متن کمکی اضافه کنید؟

❗️برای اینکار باید کمی کثیف کاری کنید و خطایی با پیغام مناسب برای خودتون بسازید اما حالا با ویژگی جدید پایتون 3.11 میتونید به هر خطایی که تولید میشه بدون هیچ کد اضافه‌ای و فقط با یک متد یه متن مناسب اضافه کنید!
سورس کد

این خصوصیت می‌تونه توی کار با کتابخانه‌هایی مثل hypothesis که برای تست نویسی خصوصیتی کاربرد دارن مفید باشه!
#py311
🔎 @py4ds
👏1
Python for Data Science
🔺 ویژگی مهم بعدی برای کسانی که برنامه نویسی async انجام میدن خیلی به درد بخور هست. 👉 Exception Group 💡اگر کدی داشته باشید که به صورت async اجرا میشه و باید خطاهای به وجود اومده توی همه یا برخی از تردها رو مدیریت کنید این ویژگی خیلی بهتون کمک می‌کنه! 📌با این…
🔺مفهوم packing, unpacking توی پایتون از مدتها قبل با استفاده از * شناخته شده بود!

🔹ابتکار جالب این بنیاد در بکارگیری این علامت برای Exception Group ها به نظرم خیلی هوشمندانه هست!

👨🏻‍🏫به نظرم در آموزش پایتون یکی از مهمترین چیزهایی که باید به خوبی رووش تاکید بشه همین علامت و کاربردهای مختلف اون هست!

🔎 @py4ds
👏1
🔺 ویژگی جدید پایتون اضافه شدن دو تابع جدید به کتابخانه داخلی math هست!
۱. تابع exp2 برای محاسبه ۲ به توان x
۲. تابع cbrt برای محاسبه ریشه سوم x

سورس کد
#py311
🔎 @py4ds
👏1
🔺 خوانده فایل‌های TOML
پایتون با PEP 518 در سال ۲۰۱۶ به معرفی فایل pyproject.toml پرداخت این فایل حاوی اطلاعات اضافی در مورد محیط اجرای کد و در واقع یک پیکربندی جداگانه(نسبت به setuptools) برای سیستم ساخت بود. این فایل ساختاری شبیه فایل‌های کانفیگ داره!

🔺شما توی این فایل میتونید تنظیمات دلخواهی رو برای کتابخانه‌هایی مثل black, mypy, isort, pylint و غیره انجام بدید و این کار کیفیت کد توسعه یافته رو خیلی زیاد می‌کنه

🍿 حالا پایتون در نسخه 3.11 با معرفی کتابخونه tomllib به شما این امکان رو میده که هر فایلی با این ساختار رو بخونید و ایجاد کنید!
سورس کد
#py311
🔎 @py4ds
👏1
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
یک لیستی میخوایم داشته باشیم که تعداد مشخصی داده بگیره و اگر اضافه تر بشه از اولش حذف کنه اینطوری اگر داده ای رو اضافه کنیم به اندازه طول لیستمون میمونه و بعدش حذف میشه

راه حل ساخت چنین لیستی چی هستش ؟یک راهکار ساده اینه که با اینسرت به ایندکس صفرم اضافه کنیم و بعد دوباره محتوای لیست رو بهش بدیم به همون تعداد که میخوایم

def list_insert(item, limited_list):
limited_list.insert(0, item)
return limited_list[:10]

ids = []
ids = list_insert(1, ids)

اما یک راهکار بهتر هم هست 😚

import collections
ids = collections.deque(maxlen=10)

به همین راحتی. الان ids یک لیسته که میتونید توش دیتا اضافه کنید و مثلا اگر اعداد یک تا ده اضافه کنید وقتی ۱۱ اضافه میکنید یک پاک میش

🖥 @SEYED_BAX
Please open Telegram to view this post
VIEW IN TELEGRAM
Python for Data Science
در رابطه با deque یه کد نمونه براتون میذارم
فرض کنید میخواید یه مجموعه‌ای از آیتمها رو توی خروجی چاپ کنید
این آیتمها اینقدر مهم نیست که همش نیاز باشه چاپ بشه اینقدر هم بی اهمیت نیست که در حد یک خط سریع چاپ کنیم و پاکش کنیم

راه حل چیه؟

بیایم و n آیتمها آخر رو توی خروجی چاپ کنیم برای اینکار باید بتونیم خطوط قبلی رو هم پاک کنیم
کد زیر نمونه‌ای از استفاده از deque برای نگهداری خطوط چاپ شده‌ی قبل (تا nخط) هست


from collections import deque
from random import choices, randint
from string import ascii_letters
from sys import stdout
from time import sleep

deq = deque(maxlen=5)
delay = 0.15
sep = " "


def get_random_items(num):
n = randint(2, 10)
return [num, *choices(ascii_letters, k=n)]


args_list = [get_random_items(i) for i in range(50)]

for args in args_list:
# clear last print lines
for _ in range(len(deq)):
stdout.write("\x1b[1A\x1b[2K") # move up cursor and delete whole line

# prepare new lines
deq.append(
sep.join(map(lambda x: str(x), args))
) # remove first element and append new to the end

# re-print the lines
stdout.write("\n".join(deq) + "\n")
sleep(delay)

سورس کد

#آموزش

🔎 @py4ds
👍1