Маалымат стеги: NumPy жана pandas
Массивдер, DataFrame жана векторлоо — жөнөкөй Python'дон маалымат менен иштөөгө ачылган эшик
for циклдери ийкемдүү, бирок сандык эсептөөлөр үчүн жай, анткени ар бир элемент толук Python объекти, ал эми ар бир операция интерпретацияланган байт-код менен аткарылат. NumPy сандарды бир үзгүлтүксүз, типтелген блокто сактайт жана бүт массив боюнча операцияларды компиляцияланган C'ге түшүрөт — бул векторлоо. pandas NumPy үстүнө белгиленген, тилкелүү таблица (DataFrame) курат, ошондо чыныгы маалыматты кол менен эмес, ат боюнча тандап, тегиздеп, топтоп, агрегациялоого болот. Чогуу алар Python'догу маалымат илиминин калган экосистемасы тураган негиз болуп саналат.
- NumPy'нин
ndarrayобъекти сандар тизмесинен эмне үчүн тезирээк жана кичине экенин түшүндүрүү, - элемент-элемент циклдерди векторлонгон массив туюнтмалары менен алмаштыруу,
- dtype, үзгүлтүксүз эстутум жана көрүнүш (view) менен көчүрмөнүн айырмасы жөнүндө ой жүгүртүү,
- ар кандай формадагы массивдер менен иштөө үчүн broadcasting эрежелерин колдонуу,
loc/ilocжана логикалык маскалар мененDataFrameкуруп, суроо берүү,- маалыматты split-apply-combine үлгүсү (
groupby) менен жыйынтыктоо, - маалымат стегине качан кайрылууну жана качан жөнөкөй Python жакшыраак экенин чечүү.
1. Маалымат стеги эмне үчүн бар: Python циклинин баасы
Сиз миллион санды генератор же цикл менен кошууну билесиз. Ал иштейт, бирок кымбат. CPython'до бүтүн сандардын list'и чындыгында көрсөткүчтөрдүн массиви, алардын ар бири өз аталышы бар өзүнчө int объектине багытталган. Эки тизмени элемент-элемент кошуу дегени: көрсөткүчтү чечмелөө, объектти чыгаруу, __add__'ды чакыруу, натыйжаны кайра таңгактоо, жаңы көрсөткүчтү сактоо — ар бир элемент үчүн, интерпретацияланган байт-кодто.
# Эки тизмени таза Python'до элемент-элемент кошуу
def add_lists(a, b):
return [x + y for x, y in zip(a, b)] # ар бир элементке Python объект операциясы
NumPy үч чыгашанын үчөөнө тең бир убакта сокку урат: сандарды таза машина маанилери катары сактайт (элементке объект жок), аларды эстутумда үзгүлтүксүз кармайт (кэшке ыңгайлуу) жана циклди өзү компиляцияланган C'де аткарат. Миллиондон элементи бар эки массив боюнча векторлонгон a + b адатта жогорудагы генератордон ондогон эсе тезирээк — жана код кыскараак.