Встановіть необхідні пакети для майстерні
Будь ласка, дотримуйтесь інструкцій з документа про встановлення, щоб встановити необхідні програми для цього уроку. Якщо ви виявите проблеми, створіть проблема з тегом Високий пріоритет.
Перевірка засобів
У каталозі _includes/scripts ви знайдете файл сценарій називається check_env.py. Він перевіряє працездатність встановленої версії Anaconda.
За замовчуванням Data Carpentry не вимагає від людей завантаження повного сховища з усіма сценаріями та заглушками. Тому, викладачем, ви повинні вирішити, яким чином хотіли б надати цей сценарій студентам, якщо ви вирішите це зробити. Щоб використовувати його, студенти можуть перейти у своєму терміналі до _includes/scripts і запустити наступне:
Якщо студенти отримають AssertionError, він повідомить вас, як допомогти виправити встановлення. В іншому випадку він повідомить вам, що система готова до столярних робіт!
01-короткий вступ до Python
Проблеми з кортежами
Що відбувається, коли ви запускаєте a_tuple [2] = 5 ?
Оскільки кортеж незмінний, він не підтримує призначення елементів. Елементи списку можуть бути індивідуально змінені.
Що тип (a_tuple) говорить вам про a_tuple ?
Словникові виклики
- Зміна словників: 2. Перепризначити друге значення.
Не забудьте також пояснити, що доступ до "другого значення" стосується імені ключа. Додайте, наприклад, rev [10] = "десять", щоб пояснити, що мова не йде про позицію.
02-починаючи з даних
Примітка про помилки
Pandas surveys_df ['вага']. Опишіть () може повернути помилку під час роботи.
Проблеми з рамками даних
Назви стовпців. (Необов’язково: відобразити обстеження_df.columns [4] = "plotid". Індекс не можна змінювати; він відтворює попередній епізод. Адаптація імені здійснюється за допомогою функції перейменування: surveys_df.rename (стовпці =))
оглядів_df.head (). Крім того, що означає surveys_df.head (15) ?
Показати перші 5 рядків. Показати перші 15 рядків.
Показати останні 15 рядків.
огляди_df.форма. Зверніть увагу на вивід форми - Який формат виводу атрибута, який повертає форму DataFrame?
Проблеми з обчисленням статистики з даних
Створіть список ідентифікаторів сайту plot_id, які містяться в даних опитування_df. Давайте назвемо цей список site_names. Скільки сайтів є в даних? Скільки видів існує в даних?
plot_names = pd.unique (огляд_df ["plot_id"]). Кількість ідентифікаторів сайтів: plot_names.size або len (plot_names). Кількість видів у даних: len (pd.unique (обстеження_df ["вид"]))
Яка різниця між len (plot_names) та survey_df ['plot_id']. Nunique () ?
Обидва результати призводять до однакових результатів, слугуючи альтернативними способами отримання унікальних значень. nunique поєднує в собі підрахунок з вилученням унікальних значень.
Кластерні виклики
Скільки спостережень - жіночі F і скільки чоловічі M ?
Що станеться, коли ви згрупуєте два стовпці за допомогою наступного висловлювання, а потім приймете середні значення?
Середнє значення обчислюється для кожної комбінації plot_id та статі. Зверніть увагу, що середнє значення не має сенсу для кожної змінної, тому ви можете вказати його за стовпчиком: наприклад, якщо ви хочете знати останній зареєстрований рік, медіана довжин футів та середнє значення ваги для кожної комбінації сюжету та сексу:
- Обчислює описову статистику ваги ваги для кожного plot_id .
Який ще спосіб створити список видів і пов’язати його з кількістю зразків даних?
Замість отримання та подальшого підрахунку отриманих стовпців з groupby, ви також можете підрахувати разом з groupby (на всіх стовпцях) і побудувати виділення з отриманого DataFrame: surveys_df.groupby ('species_id'). Count () ["record_id"]
Графічні проблеми
- Створіть графік середньої ваги виду за сайтом.
- Створіть графік загальної кількості чоловіків проти загальної кількості жінок для всього набору даних.
03-індекс-зріз-підмножина
Порада: використовуйте метод .head () протягом усього уроку, щоб підтримувати екран чистим. Заохочуйте студентів тестувати команди із .head () та без нього, щоб підсилити корисність цього інструменту, а потім використовувати його чи ні, залежно від їхніх уподобань. Наприклад, якщо студент виявляє занепокоєння щодо того, щоб не відставати від набору тексту, дайте їй зрозуміти, що вона може уникнути .head (), але ви будете використовувати його, щоб зберегти більше попередніх рядків коду.
Проблеми щодо індексації
Яке значення повертає наступний код? до [0]
1, оскільки Python починається з елемента 0 (для користувачів Matlab: це інакше!)
Яке значення це повертає? до 5]
У наведеному вище прикладі виклик [5] повертає помилку. Чому?
У списку немає елементів з індексом 5 (він переходить від 0 до 4).
Як щодо цього? a [len (a)]
Виклики чинам
Що відбувається, коли ви запускаєте такий код?
surveys_df [0: 1] вибирає лише перший елемент
surveys_df [: 4] при виборі з першого пункту робить запис 0 зайвим
survey_df [-1:], ви можете відраховувати
Порада. Ви також можете вибрати кожен N-й рядок: survey_df [1: 10: 2]. То як ви інтерпретуєте огляди_df [: - 1] ?
Що трапляється, коли я запускаю цей: surveys_df.iloc [0: 4, 1: 4] та surveys_df.loc [0: 4, 1: 4]? Яку різницю ви бачите між результатами безпосередньо попередніх команд?
Перевірте посаду або ім’я. Другий варіант подібний до запиту словника щодо назв ключів. Імена стовпців 1: 4 не існують, що призводить до помилки. Також перевірте різницю між survey_df.loc [0: 4] та surveys_df.iloc [0: 4]
Розширені проблеми на запитів
Виберіть підмножину рядків у DataFrame surveys_df, що містить дані за 1999 рік та містить значення ваги, менші або рівні 8. Скільки рядків ви отримали в результаті? Скільки рядів отримав ваш партнер?
опроси_df [(огляди_df ["рік"] == 1999) & (огляди_df ["вага"]; коли вас цікавить лише остаточне число, також може бути використана сума справжніх значень: сума ((обстеження_df [" рік "] == 1999) & (огляд_df [" вага "]
Ви можете використовувати функцію isin Python для запиту DataFrame на основі списку значень, як показано нижче: surveys_df [surveys_df ['species_id']. Isin ([listGoesHere])]. Використовуйте функцію isin, щоб знайти всі ділянки, що містять певний вид, в обстеженнях DataFrame_df. Скільки записів містять ці значення?
Наприклад, використовуйте PB та PL: surveys_df [surveys_df ['species_id']. Isin (['PB', 'PL'])] ['plot_id']. Unique () надає список усіх ділянок, на яких вони беруть участь. видів. За допомогою обстежень_df [оглядів_df ['видовий_ід']. Ісін (['ПБ', 'ПЛ'])]. Форма ви можете отримати кількість записів.
Експериментуйте з іншими запитами. Створіть запит, який знайде всі рядки зі значенням ваги більше або рівним 0.
Підказка: Тут ви можете представити, що всі ці операції сегментації насправді засновані на булевих операціях індексації (наступний розділ цього уроку). Фільтрування вказує для кожного запису, чи він відповідає (True) чи ні (False) умові. Сегментація здійснюється шляхом інтерпретації значення True/False кожного запису.
в Python його можна використовувати, щоб отримати що протилежний до вибраних даних, які ви вказали в Python. Це еквівалентно це не в. Напишіть запит, який у даних опитування виділить усі рядки із статтю, крім „M” або „F” .
Маска викликів
- Створіть новий об'єкт DataFrame, який містить лише спостереження, значення яких у стовпці статі не будь то жінка чи чоловік. Призначте кожному значенню статі в новому DataFrame нове значення 'x'. Визначає загальну кількість нульових значень у підмножині.
Ви можете перевірити кількість значень Nan за допомогою суми (surveys_df ['sex']. Isnull ()), яка дорівнює кількості записів, які не є ні жіночими, ні чоловічими .
- Створіть новий об'єкт DataFrame, який містить лише спостереження, значення яких у стовпці "стать" - чоловічі чи жіночі та значення ваги яких перевищує 0. Потім створіть стовпчасту діаграму середньої ваги за графіком із значеннями чоловік проти жінки, складений за кожною ділянкою.
Підказка: Оскільки ми знаємо, що всі інші значення є Nan, ми можемо також вибрати всі ненульові значення (це лише попередній перегляд, про це буде більше на наступному уроці):
Однак через команду зняття з заголовка легенда містить два рівні. Щоб видалити його, назви стовпців мають бути спрощені:
04-типи-і-формат даних
Виклики щодо зміни ставок
- Спробуйте перетворити стовпець plot_id у плавати з використанням surveys_df.plot_id.astype ("float"). Потім він намагається перетворити вагу в a ціле число. Що тобі кажуть Панди? Що там не так?
Панди не можуть перетворювати дані типу плавати до інт якщо стовпець містить значення NaN.
Проблеми з рахунком
- Підраховує кількість відсутніх значень у колонці. Порада. Метод .count () дає вам кількість спостережень, що не стосуються NA, у кожному стовпці. Вивчіть метод .isnull () .
Якщо у студентів виникають проблеми з генеруванням результатів або з ними щось трапляється, існує файл, який називається “зразок результату” із даними, які вони повинні генерувати.
05-злиття-даних
- У папці даних є два файли даних опитування: survey2001.csv та survey2002.csv. Прочитайте дані в Python та об’єднайте файли, щоб створити новий DataFrame. Створіть графік середньої ваги ділянки, plot_id, за роками, згрупованими за статтю. Експортуйте результати у форматі CSV та переконайтеся, що вони правильно читаються на Python.
- Створіть новий DataFrame, об’єднавши вміст таблиць surveys.csv та species.csv .
Потім обчисліть і графікуйте розподіл:
1. таксони за ділянку (кількість видів кожного таксону на ділянці):
Розподіл видів (кількість таксонів на ділянці) можна розрахувати наступним чином:
Підказка: Також можна побудувати графік кількості особин кожного таксону на кожній ділянці (стовпчаста діаграма):
(інакше легенда перекриває гістограму)
2. таксони за статтю на ділянку: Давайте призначимо значення 'M | F' значенням Nan (їх також можна змінити на 'x'):
Кількість таксонів для кожної комбінації ділянки/статі:
Пропозиція (лише для обговорення)):
Кількість особин кожного таксону в кожній ділянці та за статтю також можна розрахувати:
По правді кажучи, ця графіка не найкраща, яку можна було б вибрати, оскільки вона не розбірлива ... Першою альтернативою її вдосконалення є використання грані. Однак pandas/matplotlib не надає їх за замовчуванням. Приклад у чистому matplotlib (використання M | F для записів без визначеної статі):
Однак було б краще вказати Сіборн та Альтаїр за їх типами багатовимірних візуалізацій.
- ASUS Rog Strix G531GT-BQ012, аналіз ігрового ноутбука, який шукає баланс - MuyComputer
- АНАЛІЗ КРОВІ І ІСТИНИ
- 10 темних фактів із життя Жана-Клода Ван Дамма Де10
- 7 прийомів краси бабусі з використанням вівсянки
- Китай ініціює ініціативу щодо встановлення глобальних правил безпеки даних WSJ - Red Uno de