Python як обробка статистики


355

Багато людей використовують для своїх статистичних даних основний інструмент, наприклад, Excel або іншу електронну таблицю, SPSS, Stata або R. Вони можуть звернутися до певного пакету для дуже особливих потреб, але багато чого можна зробити за допомогою простої таблиці або загального пакета статистики або середовища програмування статистики.

Мені завжди подобався Python як мова програмування, і для простих потреб легко написати коротку програму, яка розраховує те, що мені потрібно. Matplotlib дозволяє мені побудувати його.

Хтось повністю перейшов з, скажімо, R, на Python? R (або будь-який інший пакет статистичних даних) має багато функціональних можливостей, характерних для статистики, і він має структури даних, які дозволяють думати про статистику, яку ви хочете виконати, і менше про внутрішнє представлення ваших даних. Python (або якась інша динамічна мова) має перевагу, що дозволяє мені програмувати на звичній мові високого рівня, і це дозволяє програмно взаємодіяти з реальними системами, в яких перебувають дані або в яких я можу проводити вимірювання. Але я не знайшов жодного пакету Python, який би дозволив мені висловити речі "статистичною термінологією" - від простої описової статистики до складніших багатоваріантних методів.

Що ви можете порекомендувати, якщо я хотів би використовувати Python як "робочий стіл зі статистикою" для заміни R, SPSS тощо?

Що б я здобув і втратив, грунтуючись на вашому досвіді?


5
FYI, є новий subddit
naught101

Коли вам потрібно перемістити речі в командному рядку, pythonpy ( github.com/Russell91/pythonpy ) є приємним інструментом.
RussellStewart

Відповіді:


307

Важко ігнорувати багатство статистичних пакетів, доступних у R / CRAN. Це означає, що я провожу багато часу на землі Python і ніколи не відверную нікого від такої розваги, як я. :) Ось декілька бібліотек / посилань, які можуть бути корисними для статистичної роботи.

  • NumPy / Scipy Ви, мабуть, про них уже знаєте. Але дозвольте зазначити Кулінарну книгу, де ви можете ознайомитись із багатьма статистичними засобами, які вже є, та Список прикладів, який є чудовим посиланням на функції (включаючи маніпулювання даними та інші операції). Ще одна зручна довідка - « Поширення Джона Кука в Scipy» .

  • панди Це справді приємна бібліотека для роботи зі статистичними даними - табличні дані, часові ряди, дані панелей. Включає багато вбудованих функцій для зведення даних, групування / агрегації, повороту. Також є бібліотека статистики / економетрики.

  • larry Мічений масив, який добре грає з NumPy. Забезпечує статистичні функції, відсутні в NumPy і корисні для обробки даних.

  • python-statlib Досить недавнє зусилля, яке поєднало ряд розрізнених бібліотек статистики. Корисно для базової та описової статистики, якщо ви не використовуєте NumPy або панду.

  • statsmodels Статистичне моделювання: лінійні моделі, ГЛМ, серед інших.

  • scikits Статистичні та наукові пакети обчислень - особливо вирівнювання, оптимізація та машинне навчання.

  • PyMC Для ваших потреб в ієрархічному моделюванні Bayesian / MCMC /. Настійно рекомендується.

  • Моделі сумішей PyMix .

  • Biopython Корисний для завантаження біологічних даних у python та надає деякі рудиментарні статистичні / машинні засоби навчання для аналізу.

Якщо швидкість стає проблемою, подумайте про Теано - використовується з хорошим успіхом людьми з глибоким навчанням.

Є багато інших речей там, але це те, що я вважаю найкориснішим у згаданих вами напрямках.


16
Усі відповіді були і корисними, і корисними, і всі вони заслуговували б на те, щоб їх прийняли. Цей, однак, робить дуже гарну роботу, відповідаючи на питання: з Python вам потрібно зібрати багато творів, щоб робити те, що ви хочете. Ці вказівники, без сумніву, будуть дуже корисні для тих, хто хоче стати статистикою / моделюванням / тощо. з Python. Дякую всім!
Фабіан Фагергольм

1
@ars, будь ласка, чи знаєте ви, який найкращий спосіб використовувати Python для Windows?
Стефан Лоран

1
@ StéphaneLaurent Я зазвичай встановлюю різні частини самостійно, але для швидкого запуску / встановлення ви можете подумати: pythonxy .
ар

Цей скрипт встановлює багато цитованих вище бібліотек: fonnesbeck.github.com/ScipySuperpack
Fr.

Pythonxy приємний, але він може дратувати, якщо ви хочете робити великі обчислення, оскільки він доступний лише для 32 біт. Ось неофіційні бінарні файли для встановлення багатьох пакетів python. Вони можуть бути дуже корисними, якщо ви вирішите працювати під вікнами. lfd.uci.edu/~gohlke/pythonlibs @ StéphaneLaurent
JEquihua

140

Як чисельна платформа та заміна MATLAB, Python досяг зрілості щонайменше 2-3 роки тому, і зараз багато в чому краще, ніж MATLAB. Я намагався перейти на Python з R приблизно в той час, і не вдалося. Є занадто багато пакетів R, якими я користуюся щодня, які не мають еквівалента Python. Відсутності ggplot2 достатньо, щоб стати шоустопом, але їх набагато більше. На додаток до цього, R має кращий синтаксис для аналізу даних. Розглянемо наступний основний приклад:

Пітон :

results = sm.OLS(y, X).fit()

R :

results <- lm(y ~ x1 + x2 + x3, data=A)

Що ви вважаєте виразнішим? У R ви можете думати з точки зору змінних і легко можете розширити модель, скажімо,

lm(y ~ x1 + x2 + x3 + x2:x3, data=A)

Порівняно з R, Python - це мова низького рівня для побудови моделі.

Якби у мене було менше вимог до розширених статистичних функцій і вже було кодування Python для більшого проекту, я вважав би Python хорошим кандидатом. Я б вважав це також тоді, коли потрібен підхід з голими кістками, або через обмеження швидкості, або через те, що пакети R не забезпечують переваги.

Для тих , хто робить щодо передової статистики прямо зараз , відповідь не представляє ніякої небезпеки, і немає . Насправді, я вважаю, Python обмежить те, як ви думаєте про аналіз даних. Буде потрібно кілька років і багато людських років зусиль, щоб створити модульні заміни для 100 необхідних пакетів R, і навіть тоді Python буде відчувати себе мовою, на якій можливості аналізу даних були зафіксовані. Оскільки R вже зафіксував найбільшу відносну частку прикладних статистиків у кількох галузях, я не бачу, що це станеться незабаром. Сказавши це, це вільна країна, і я знаю людей, які займаються статистикою в APL та C.


9
+1 Мені просто подобається ця відповідь через те, що ти робиш акцент на R як статистичній мові для роботи з даними, використовуючи формули тощо. Попри це, я очікую великого позитивного впливу панд (у поєднанні зі статистичними моделями) на спільноту Python.
chl

28
у спільноті Python, patsy вирішує необхідність "формули", яку ви описуєте, часом покращуючи те, що пропонує R: patsy.readthedocs.org/en/v0.1.0/index.html Що в Python приємно, це те, що все це аспекти обробляються ортогонально. Pandas піклується про часові видання та представлення кадрів / серій. паці за формулами. numpy для представлення масиву та векторизації. statsmodels обгортає статистику algos. scipy для оптимізації та купа інших речей. Результат - більш чисті інтерфейси. R, порівняно, є більш зрілим, але є волоссям. ../ ..
blais

3
../ .. Я думаю, що в кінцевому рахунку сили будуть просуватися в напрямку все більшої інтеграції Python, і ви виявите, що це стане досить конкурентом R. Очищення даних в R - це така PIA порівняно з Python, і це ніколи не банальна частина роботи. - Бле
хл

9
як оновлення: перший приклад в документації щодо статистичних моделей зараз results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit(). Statsmodels все ще сильно відстає від інших статистичних пакетів, таких як R за рівнем покриття, але є все більше і більше речей, які ви можете зробити в python, перш ніж вам доведеться захопити інший мову або статистичний пакет. (GEE та Mixed будуть у наступному випуску.)
Йозеф

4
"Приємно в Python - це те, що всі ці аспекти обробляються ортогонально ...". Я не згоден у ряді пунктів. Існують значні перекриття між numpy, scipy, statsmodels. Дизайн R набагато більш модульний та економічний. Крім того, більшість не у всіх концептуальних нововведеннях мов, орієнтованих на дані (не лише формули, а й рамки даних, граматика графіки, карета як граматика меделей, плетач і все ще розвивається граматика даних dplyr) виникли в Р. Спільнота Python, здається, завжди на крок позаду і надто зосереджена на продуктивності.
гаппі

95

По-перше, дозвольте мені сказати, що я згоден з відповіддю Джона Д Кука: Python не є мовою, специфічною для домену, як R, і, відповідно, є набагато більше, що ви зможете зробити з нею далі в дорозі. Звичайно, R бути DSL означає, що останні алгоритми, опубліковані в JASA, майже напевно будуть у Р. Якщо ви в основному займаєтесь спеціальною роботою і хочете експериментувати з найновішою технікою регресії ласо, скажімо, R важко перемогти. Якщо ви займаєтесь більшою виробничою аналітичною роботою, інтегруючись з існуючим програмним забезпеченням та середовищем, і переймаєтесь швидкістю, розширюваністю та ремонтом, Python буде служити вам набагато краще.

По-друге, арс дав чудову відповідь з хорошими посиланнями. Ось ще кілька пакетів, які я вважаю важливими для аналітичної роботи в Python:

  • matplotlib для красивої графіки якості публікації.
  • IPython для розширеної інтерактивної консолі Python. Важливо, що IPython забезпечує потужну основу для інтерактивних, паралельних обчислень в Python.
  • Cython для легкого запису розширень на C в Python. Цей пакет дозволяє вам взяти шматок обчислювально інтенсивного коду Python та легко перетворити його на розширення C. Тоді ви зможете завантажити розширення C, як і будь-який інший модуль Python, але код буде працювати дуже швидко, оскільки він знаходиться в C.
  • PyIMSL Studio - це колекція сотень математичних та статистичних алгоритмів, які ретельно задокументовані та підтримуються. Ви можете викликати абсолютно однакові алгоритми з Python та C, майже з однаковим API, і ви отримаєте однакові результати. Повне розкриття інформації: я працюю над цим продуктом, але також багато використовую.
  • xlrd для читання у файлах Excel легко.

Якщо ви хочете більше MATLAB-подібної інтерактивної IDE / консолі, перегляньте Spyder або плагін PyDev для Eclipse .


15
R не є DSL у звичайному розумінні цього терміна. Це повноцінна, цірна мова програмування.
Хадлі

4
@hadley: Можливо, я занадто розмовно використовую "DSL", але для того, що це варто, сторінка Вікіпедії на DSL чітко перераховує S + і R як приклади DSL та Python як мови загального призначення. Дивіться en.wikipedia.org/wiki/Domain-specific_language . У такому ж сенсі SAS є повним Тюрінгом (лише якщо використовується макрокомпонент IML), але я навряд чи називаю це повною мовою в практичному розумінні. Я вважаю R неоціненним у своїй роботі, але намагаюся якомога більше використовувати коди, використовуючи мови загального призначення, а не намагаючись робити все з R (або Excel для цього).
Джош Геман

16
Я думаю, що несправедливо включати R і S до того ж списку, що і інші мови у вікіпедії - нічого, чого ви не можете зробити в R, ви можете зробити в python. Звичайно, є багато речей, які краще підходять іншій мові програмування, але те саме стосується і Python.
хадлі

6
Ах, Хадлі видалив R і S + зі сторінки Вікіпедії того ж дня, коли ми обмінялися коментарями, 13 жовтня 2011 року. Отже, я часто чую мантру "R була розроблена і для статистиків" як її основоположну силу. Мабуть, зараз це мова загального призначення теж ...
Джош Хеман

5
Ну, чи можу я мати багатопотоковий код з R? Мережевий асинхронний введення / виведення? Повірте, ці випадки використання фактично виникають у наукових обчисленнях. R - це DSL, на мій погляд. Це сильно в статистиці і погано в більшості інших речей.
Gael Varoquaux

61

Я не думаю, що є жодний аргумент, що діапазон статистичних пакетів у cran та Bioconductor набагато перевищує все, що пропонується з інших мов, однак, це не єдине, що слід враховувати.

У своєму дослідженні я використовую R, коли можу, але іноді R просто надто повільний. Наприклад, великий запуск MCMC.

Нещодавно я поєднав python та C для вирішення цієї проблеми. Короткий підсумок: підгонка великої стохастичної моделі популяції з ~ 60 параметрами та висновку про 150 прихованих станах за допомогою MCMC.

  1. Прочитайте в даних python
  2. Побудуйте структури даних C в python за допомогою ctypes .
  3. Використовуючи forцикл python , викличте функції C, які оновлювали параметри та обчислювали ймовірність.

Швидкий розрахунок показав, що програма витрачала 95% на функції C. Однак мені не довелося писати хворобливий код C для читання в даних або побудувати структури даних C.


Я знаю, що є також rpy , де python може викликати функції R. Це може бути корисно, але якщо ви "просто" займаєтеся статистикою, я б використав R.


29
Вставте безсоромний штепсель для Rcpp :)
Дірк Еддельбуеттель,

Цікаво, чи ви спробували PyMC і як порівнюється продуктивність (відносно python / C) для ваших моделей.
АРС

@ars: У наведеному вище випадку кожна ітерація (з 10 ^ 8 ітерацій) передбачала вирішення 5 ODE. Це справді довелося зробити в C. Решта коду була досить простою, і тому код C був простий. Моя програма була нестандартною, тому PyMC не застосовувався - також це було ~ 2 роки тому.
csgillespie

40

Наступні обговорення StackOverflow можуть бути корисними


Усі ці дискусії були зняті :-(. Можливо, і цю відповідь слід зняти?
Джонатан

12
Це сумно. Я оновив посилання на посилання на зворотні машинні копії.
Джеромі Англім

36

Я не бачив, якби вчені-науки були чітко згадані у відповідях вище. Це пакет Python для машинного навчання в Python. Він досить молодий, але надзвичайно швидко зростає (відмова: Я - розробник наукових робіт). Його цілі - забезпечити стандартні алгоритмічні інструменти машинного навчання в єдиному інтерфейсі з акцентом на швидкість та зручність використання. Наскільки я знаю, нічого подібного в Matlab не знайти. Його сильні моменти:

Matlab - це чудовий інструмент, але в моїй власній роботі scipy + scikit-learn починає давати мені перевагу в Matlab, тому що Python виконує кращу роботу з пам'яттю завдяки механізму перегляду (і у мене є великі дані), і тому що scikit-learn дозволяє мені дуже легко порівнювати різні підходи.


29

Одна з переваг переходу на Python - це можливість зробити більше роботи однією мовою. Python - це розумний вибір для стискання чисел, написання веб-сайтів, адміністративного сценарію тощо. Отже, якщо ви робите свою статистику в Python, вам не доведеться перемикати мови для виконання інших завдань програмування.

Оновлення: 26 січня 2011 р. Microsoft Research оголосила Sho , нове середовище для аналізу даних на основі Python. У мене ще не було можливості спробувати це, але це здається цікавою можливістю, якщо потрібно запустити Python, а також взаємодіяти з .NET-бібліотеками.


4
Я зробив багато скорочень чисел, один веб-сайт і кілька адміністративних скриптів в R, і вони працюють досить добре.

28

Можливо, ця відповідь обманює, але здається дивним, що ніхто не згадав про проект rpy , який забезпечує інтерфейс між R та Python. Ви отримуєте пітонічну api для більшості функціональних можливостей R, зберігаючи синтаксис (я б стверджував, що краще), обробку даних, а в деяких випадках і швидкість Python. Навряд чи Python коли-небудь матиме стільки інструментів статистики кровотоку, як R, тільки тому, що R - DSL, а спільнота статистики більше вкладається в R, ніж можливо, в будь-яку іншу мову.

Я вважаю це аналогічним використанню ORM для використання переваг SQL, дозволяючи Python бути Python, а SQL - SQL.

Інші корисні пакети, спеціально для структур даних, включають:

  • pydataframe копіює data.frame і може використовуватися з rpy. Дозволяє використовувати R-подібну фільтрацію та операції.
  • pyTables Використовує швидкий тип даних hdf5 під ним, протягом багатьох віків
  • h5py Також hdf5, але спеціально спрямований на взаємодію з numpy
  • pandas Інший проект, який управляє data.frame як дані, працює з rpy, pyTables та numpy

1
Я завжди вважаю, що rpy неохайно працювати. Наприклад, він вимагає великих рядків кодів з деякими простими функціями, наприклад.
Нестор

Можливо, розширення rmagic для IPython (на що вказував @CarlSmith) може полегшити роботу з rpy2? Див. Ipython.org/ipython-doc/dev/config/extensions/rmagic.html .
Джонатан

26

Я є біостатиком у тому, що по суті є магазином R (~ 80 людей використовують R як основний інструмент). Тим не менш, я витрачаю приблизно 3/4 свого часу, працюючи в Python. Я пов'язую це насамперед з тим, що моя робота передбачає байєсівський і машинний підходи до статистичного моделювання. Python потрапляє набагато ближче до солодкого місця продуктивності / продуктивності, ніж R, принаймні для статистичних методів, що базуються на ітерації або на основі моделювання. Якби я виконував ANOVAS, регресії та статистичні тести, я впевнений, що в першу чергу я б використав R. Більшість того, що мені потрібно, однак не доступне як консервований пакет R.


5
+1 для розрізнення сфери статистики, в якій ви працюєте. Є сфери статистичних обчислень (наприклад, неструктурований аналіз тексту та комп’ютерний зір), для яких у Python існує багато функціональних можливостей, і Python, здавалося б, є тією мовою в цих піддоменах. Я думаю, де спільнота Python має наздогнати це вдосконалення структури даних та семантики навколо класичного статистичного моделювання, що дизайн R настільки хороший. Розробники scikits.statsmodels досягли значного прогресу на цьому фронті: scikits.appspot.com/statsmodels
Josh Hemann

26

Я хотів би сказати, що з точки зору того, хто сильно покладається на лінійні моделі для моєї статистичної роботи і люблю Python в інших аспектах своєї роботи, я був дуже розчарований в Python як платформі для того, щоб робити що-небудь, але досить базову статистику.

Я вважаю, що R має набагато кращу підтримку з боку статистичного співтовариства, набагато кращу реалізацію лінійних моделей, і, якщо відверто сказати, зі статистичної сторони речей, навіть при чудових розподілах на зразок «Enthought», Python відчуває себе трохи як Дикий Захід.

І якщо ви не працюєте сольно, шанси на те, що у вас є співробітники, які використовують Python для статистики, на даний момент досить малі.


26

Справді не потрібно відмовлятися від R для Python у будь-якому випадку. Якщо ви використовуєте IPython з повним стеком, у вас є розширення R, Octave і Cython, тож ви зможете легко і чисто використовувати ці мови у своїх ноутбуках IPython. Ви також маєте підтримку передачі значень між ними та вашим простором імен Python. Ви можете виводити свої дані у вигляді графіків, використовуючи matplotlib і як належним чином надані математичні вирази. Є багато інших функцій, і ви можете зробити все це у своєму браузері.

IPython пройшов довгий шлях :)


19

Те, що ви шукаєте, називається мудрецем: http://www.sagemath.org/

Це відмінний інтернет-інтерфейс до добре складеної комбінації інструментів Python для математики.


4
Блискуча частина про Sage полягає в тому, що це по суті об'єднання ряду чудових безкоштовних інструментів для математики, статистики, аналізу даних тощо. Це більше, ніж просто Python; він має доступ до R, maxima, GLPK, GSL тощо.
shabbychef

18

Rpy2 - грати з R перебування в Python ...

Подальша розробка за запитом Гунга:

Документацію щодо Rpy2 можна знайти на веб-сайті http://rpy.sourceforge.net/rpy2/doc-dev/html/introduction.html

З документації, інтерфейс високого рівня в rpy2 розроблений для полегшення використання R програмістами Python. R-об'єкти піддаються впливу екземплярів класів, реалізованих Python, причому функції R в цілому ряді випадків прив'язуються до цих об'єктів. Цей розділ також містить вступ до графіки з графіками R: трелі (гратчасті), а також граматику графіки, реалізованої в ggplot2, дозволяють робити складні та інформативні сюжети з невеликим написаним кодом, в той час як основна графіка сітки дозволяє окреслити всі можливі налаштування.

Чому мені це подобається:

Я можу обробити свої дані, використовуючи гнучкість python, перетворити їх у матрицю за допомогою numpy або pandas і зробити обчислення в R, і повернути r об'єкти, щоб виконати пост-обробку. Я використовую економетрику, а пітон просто не матиме інструментів статистики кровоточивості краю R. І R навряд чи коли-небудь буде настільки гнучким, як пітон. Це вимагає, щоб ви зрозуміли R. На щастя, у нього є приємна спільнота розробників.

Сам Rpy2 добре підтримується, і джентльмен, який його підтримує, відвідує форуми SO. Встановлення Windows може бути незначним болем - https://stackoverflow.com/questions/5068760/bizzarre-issue-trying-to-make-rpy2-2-1-9-work-with-r-2-12-1-using -python-2-6-un? rq = 1 може допомогти.


1
Ласкаво просимо на сайт, @pythOnometrist. Я підозрюю, що це корисний внесок. Не заперечуєте короткий підсумок Rpy2, щоб читачі могли вирішити, чи це те, що вони шукають?
gung

17

Я використовую Python для статистичного аналізу та прогнозування. Як згадували інші вище, Numpy і Matplotlib - хороші робочі коні. Я також використовую ReportLab для отримання вихідних даних у форматі PDF.

На даний момент я розглядаю Resolver і Pyspread, які є програмами для електронних таблиць, схожими на Excel, які базуються на Python. Resolver - комерційний продукт, але Pyspread досі залишається з відкритим кодом. (Вибачте, я обмежений лише одним посиланням)


1
Знову кілька цікавих інструментів. Я знав про Numpy, Matplotlib та ReportLab, але Pyspread здається цікавою ідеєю. Принаймні, я хотів би ввести вирази Python у комірки електронної таблиці. Незважаючи на те, що це не вирішує всіх можливих проблем, це може бути корисним для прототипування та розігрування даних.
Фабіан Фагерхольм

1
+1 Вау електронні таблиці! Я ще не чув про них. Я завжди хотів, щоб OpenOffice / LibreOffice дійсно охопила та інтегрувала сценарії python у своє програмне забезпечення для електронних таблиць
Користувач

15

чудовий огляд поки що. Я використовую python (конкретно scipy + matplotlib) як заміну matlab з 3 років, працюючи в університеті. Я іноді все ще повертаюсь назад, тому що я знайомий з конкретними бібліотеками, наприклад, пакет вейвлетів matlab - просто приголомшливий.

Мені подобається http://enthought.com/ дистрибуція python. Це комерційно, але безкоштовно для академічних цілей і, наскільки я знаю, повністю з відкритим кодом. Оскільки я працюю з великою кількістю студентів, перед тим, як використовувати enthought, їм іноді було проблематично встановлювати numpy, scipy, ipython тощо. Enthought забезпечує встановлення для Windows, Linux та Mac.

Ще два пакети, які варто згадати:

  1. ipython (поставляється вже з ентузіазмом) чудова вдосконалена оболонка. хороший вступ представлений на showmedo http://showmedo.com/videotutorials/series?name=PythonIPythonSeries

  2. nltk - інструментарій з природних мов http://www.nltk.org/ чудовий пакет, якщо ви хочете зробити статистику / машинне навчання на будь-якому корпусі.


12

Це цікаве запитання, з великими відповідями.

Можливо, ви знайдете корисну дискусію в документі, який я написав з Roseline Bilina. Остаточну версію можна знайти тут: http://www.enac.fr/recherche/leea/Steve%20Lawford/papers/python_paper_revid.pdf (з тих пір майже в такому вигляді з'явився як "Пітон для уніфікованих досліджень у галузі економетрії та статистики" ", у Econometric Reviews (2012), 31 (5), 558-591).


10

Можливо, це не пов’язано безпосередньо, але R має приємне середовище для графічного інтерфейсу для інтерактивних сесій (редагувати: на Mac / Windows). IPython дуже хороший, але для середовища, наближеного до Matlab, ви можете спробувати Spyder або IEP. Мені пощастило пізно використовувати IEP, але Spyder виглядає більш перспективно.

IEP: http://code.google.com/p/iep/

Spyder: http://packages.python.org/spyder/

І веб-сайт IEP містить коротке порівняння відповідного програмного забезпечення: http://code.google.com/p/iep/wiki/Alternatives


9

Тут я знайшов чудовий вступ до панд, що пропоную перевірити. Pandas - це дивовижний набір інструментів, який забезпечує можливості аналізу даних високого рівня R з великими бібліотеками та якістю виробництва Python.

Ця публікація в блозі дає чудове знайомство з Пандами з точки зору повного новачка:

http://manishamde.github.com/blog/2013/03/07/pandas-and-python-top-10/


3
Чи можете ви, будь ласка, написати кілька слів про те, які якості роблять його «чудовим», щоб читачі заздалегідь могли визначити, чи перегляд його буде відповідним для них?
whuber

1
Вибачте. Щойно зрозумів, що я додав неправильне посилання у своєму початковому пості
падаван

8

Я повинен додати крик для Sho, числового обчислювального середовища, побудованого на IronPython. Я зараз його використовую для класу машинного навчання в Стенфорді, і це було дуже корисно. Він вбудований у лінійні пакети алгебри та можливості графіків. Будучи .Net легко розширити за допомогою C # або будь-якої іншої мови .Net. Мені було набагато легше почати роботу, будучи користувачем Windows, ніж прямі Python та NumPy.


8

Помаранчевий ще ніхто не згадував :

Обмін даними за допомогою візуального програмування або сценаріїв Python. Компоненти машинного навчання. Додатки для біоінформатики та видобутку тексту. У комплекті є функції для аналізу даних.

Я не використовую його щодня, але це обов'язковий перегляд для тих, хто віддає перевагу GUI через інтерфейс командного рядка.

Навіть якщо ви віддаєте перевагу останній, з Orange добре ознайомитись, оскільки ви можете легко імпортувати фрагменти Orange до своїх сценаріїв Python, якщо вам потрібна певна його функціональність.


7

Зауважте, що SPSS Statistics має інтегрований інтерфейс Python (також R). Таким чином, ви можете писати програми Python, які використовують процедури статистики і виробляють звичайний добре відформатований вихід статистики або повертають результати вашій програмі для подальшої обробки. Або ви можете запускати програми Python в командному потоці "Статистика". Ви все ще повинні знати мову командної статистики, але ви можете скористатися всім управлінням даними, результатами презентації тощо, що надає Статистика, а також процедурами.


7

Недавнє порівняння від DataCamp дає чітке уявлення про R та Python.

Використання цих двох мов у полі аналізу даних. Python використовується, як правило, тоді, коли завдання аналізу даних потрібно інтегрувати з веб-додатками або якщо код статистики потрібно включити у виробничу базу даних. R в основному використовується, коли завдання аналізу даних вимагають самостійних обчислень або аналізу на окремих серверах.

Я вважаю це таким корисним у цьому блозі і сподіваюся, що він допоможе і іншим зрозуміти останні тенденції в обох цих мовах. Юлія також підходить у цьому районі. Сподіваюся, це допомагає!


6

Я вважаю, що Python - це чудовий робочий стіл у моїй галузі. Я роблю багато скреблінгу, обробку даних, велику роботу з даними, аналіз мережі, байєсівське моделювання та моделювання. Всі ці речі, як правило, потребують швидкості та гнучкості, тому я вважаю, що в цих випадках Python працює краще, ніж R. Ось кілька речей про Python, які мені подобаються (деякі згадуються вище, інші - ні):

-Очищення синтаксису; більш читабельний код. Я вважаю, що Python є більш сучасною та синтаксично послідовною мовою.

-Python має Notebook, Ipython та інші дивовижні інструменти для спільного використання коду, співпраці, публікації.

-iPython's notebook дозволяє використовувати R у своєму Python-коді, тому завжди можна повернутися до R.

-Насправді швидше, не звертаючись до C. Використання Cython, NUMBA та інших методів інтеграції на C приведе ваш код до швидкостей, порівнянних із чистими C. Це, наскільки мені відомо, не може бути досягнуто в Р.

-Pandas, Numpy і Scipy продувають стандартний R з води. Так, є кілька речей, які R може зробити в одному рядку, але займає Pandas 3 або 4. Однак, як правило, Pandas може обробляти більші набори даних, простіший у використанні та забезпечує неймовірну гнучкість щодо інтеграції з іншими Python пакети та методи.

-Пітон більш стійкий. Спробуйте завантажити 2gig набір даних у RStudio.

- Один акуратний пакет, який не здається згаданим вище, - це PyMC3 - чудовий загальний пакет для більшості ваших байєсівських моделей.

- Деякі, вище згадуйте ggplot2 та гріз про його відсутність у Python. Якщо ви коли-небудь використовували графічні функції Matlab та / або використовували matplotlib в Python, то ви знаєте, що останні варіанти, як правило, набагато більш здатні, ніж ggplot2.

Однак, можливо, R легше засвоїти, і я часто його використовую у тих випадках, коли я ще не надто знайомий з процедурами моделювання. У цьому випадку глибина позачергових статистичних бібліотек R є неперевершеною. В ідеалі я б знав обох досить добре, щоб можна було користуватися за потреби.


5

Для тих, кому доводиться працювати під Windows, Anaconda ( https://store.continuum.io/cshop/anaconda/ ) справді дуже допомагає. Установка пакетів під Windows була головним болем. Якщо встановлено Anaconda, ви можете налаштувати готове до використання середовище розробки за допомогою одного вкладиша.

Наприклад, с

conda create -n stats_env python pip numpy scipy matplotlib pandas

всі ці пакети будуть завантажені та встановлені автоматично.


5

Python має довгий шлях, перш ніж його можна порівняти з R. У нього значно менше пакетів, ніж у R та нижчої якості. Люди, які дотримуються основ або покладаються лише на свої власні бібліотеки, ймовірно, можуть робити свою роботу виключно в Python, але якщо ви хтось, хто потребує більш досконалих кількісних рішень, я смію сказати, що нічого там не наближається до R.

Слід також зазначити, що на сьогоднішній день Python не має належного наукового IDE у стилі Matlab, порівнянного з R-Studio (будь ласка, не кажіть Spyder), і вам потрібно опрацювати все на консолі. Взагалі кажучи, весь досвід Python вимагає великої кількості "видовищності", якої більшості людей не вистачає і не хвилює.

Не зрозумійте мене неправильно, я люблю Python, це насправді моя улюблена мова, яка, на відміну від R, є справжньою мовою програмування. Однак, якщо мова йде про чистий аналіз даних, я залежний від R, який на сьогоднішній день є найбільш спеціалізованим та розробленим рішенням на сьогоднішній день. Я використовую Python, коли мені потрібно поєднувати аналіз даних з інженерією програмного забезпечення, наприклад створити інструмент, який виконає автоматизацію методів, які я вперше запрограмував у брудному сценарії R. У багатьох випадках я використовую rpy2 для виклику R з Python, оскільки у переважній більшості випадків пакети R набагато кращі (або взагалі не існують у Python). Таким чином я намагаюся отримати найкраще з обох світів.

Я все ще використовую деякий Matlab для розробки чистого алгоритму, оскільки люблю його синтаксис та швидкість у математичному стилі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.