Към съдържанието
wannacode

Първата таблица

Накратко: pd.read_csv зарежда CSV файл в таблица (DataFrame), а head, shape, info и describe показват редовете, размера, типовете и обобщенията, преди да смяташ.

Проблем

„Колко поръчки имаме?“

Управителят ти праща orders.csv и пита колко поръчки има и каква е средната стойност. Изкушението е да отвориш файла, да напишеш mean() и да върнеш число.

Само че още не знаеш какво има във файла. Един ред поръчка ли е, или ред от поръчка? Има ли празни клетки? Числата числа ли са, или текст като „1,60 €“? Средна на грешна колона дава грешен отговор, който изглежда напълно сериозно.

Затова анализът започва с първи поглед: какво има в таблицата, преди да смяташ с нея.

Идеята

Таблицата: read_csv

CSV е текстов файл с таблица: първият ред е имената на колоните, а всеки следващ ред е един запис със стойности, разделени със запетая. Такъв файл дава почти всяка система: магазинът, банката, Excel.

pandas е библиотеката за таблици в Python. pd.read_csv чете файла и връща DataFrame: таблица с имена на колоните и номер на всеки ред вляво (това е индексът). head() показва първите пет реда:

Pythonданни: таблиците на магазина

import pandas as pd е навикът на всички: pandas се пише pd. Файлът orders.csv е до кода, заедно с другите таблици на магазина: products.csv, customers.csv, order_items.csv, categories.csv и reviews.csv.

Последният ред няма print, а таблицата пак излиза. Така работи бележникът (Jupyter), в който анализаторите пишат: стойността на последния ред се показва сама.

Идеята

Колко и какво: shape и info

shape е двойка (редове, колони). info() описва всяка колона: колко стойности има и от какъв тип са:

Pythonданни: таблиците на магазина

Прочети го отгоре надолу:

  • 25 реда, 6 колони. Нито една колона не е съвсем празна.
  • category_id има 24 стойности от 25: на един продукт категорията липсва.
  • Типовете: int64 са цели числа, float64 дробни, str текст. Датата added_at е текст: pandas не познава сам, че е дата. Ще го научим.
1. Колоната category_id е от цели числа (3, 4, 5…). Защо pandas я чете като float64?
По-точно, за любопитните

Типът str е новост на pandas 3 (2026). В по-старите версии и в много статии текстът е object. Значението е същото: колоната е от низове.

Идеята

Числата накратко: describe

describe() обобщава числовата колона: колко стойности има, средната (mean), разсейването (std), най-малката, най-голямата и трите четвъртини (25%, 50%, 75%):

Pythonданни: таблиците на магазина

Средната цена е 7,04 €, а 50% (медианата, цената по средата) е 2,80 €. Разликата е голяма: няколко скъпи продукта (ножовете за 39 €, тиганът за 24,90 €) дърпат средната нагоре. Ако кажеш на управителя, че „продуктът ни струва средно 7 €“, той ще си представи друг магазин.

Дали средната или медианата, ще решаваме в модула за статистика. Засега правилото е: виж и двете.

Виж го

Кой продукт няма категория

info() каза, че една категория липсва. Ето кой е продуктът:

Pythonданни: таблиците на магазина

Подаръчната карта не е храна и не е за дома. Липсата е истинска информация, а не грешка във файла. Наличността ѝ е 999: условно число, което значи „без ограничение“. Ако сумираш наличността на склада, тя ще изкриви резултата.

Ето това дава първият поглед: още преди първата сметка знаеш кое не е каквото изглежда.

Пробвай

Редовете на поръчките

Колко реда има order_items.csv и колко броя от продукт има средно на един ред? Запиши ги в rows и avg_qty.

Pythonданни: таблиците на магазина

Упражнение

Най-новите поръчки

head() има брат: tail() показва последните редове. И двата приемат колко реда искаш: head(10).

Файлът с поръчките е подреден по дата. Запиши в latest последните 4 поръчки.

Pythonданни: таблиците на магазина
По-точно, за любопитните

Файл, изнесен от български Excel, често е с точка и запетая между стойностите и със запетая в числата: 1,60. Тогава pd.read_csv('file.csv', sep=';', decimal=','). Кирилицата от стари програми понякога е в кодировка Windows-1251: encoding='cp1251'. Таблица от Excel се чете направо с pd.read_excel, а от база данни с pd.read_sql (виж курса Бази данни и SQL).

Тест

Провери се

1. Какво връща orders.shape за таблица с 60 реда и 4 колони?
2. Средната цена на продуктите е 7,04 €, а медианата е 2,80 €. Какво казва това?
3. Кой метод казва колко стойности липсват във всяка колона и какъв тип е тя?
4. Последният ред на кода е orders.head(), без print. Какво се вижда?

Създаден от Иво Гергов като част от кампанията на Evo Tech за достъпно обучение по програмиране ·