Python. Анализ данных. PANDAS
В языке Python существует множество библиотек для анализа данных, включая предобработку данных, Big Data, статистический анализ. Мы начнем свое знакомства с удивительным миром анализа данных с библиотеки PANDAS, которая осуществляет их предобработку.
Итак, допустим, у нас имеются некоторые данные в формате CSV. Чтобы их загрузить, в библиотеке есть функция read_csv. Рассмотрим пример:
#Подключим библиотеку import pandas as pd #Прочитаем данные data = pd.read_csv('company.csv') print(data)
Данная программа прочитает из файла данные, и выведет на экран краткое содержимое объекта DataFrame:
Стоит иметь в виду, что ead_csv по умолчанию понимает только файлы с разделителем запятая, а в числах в качестве десятичного разделителя — точка. Чтобы читать CSV других форматов, придется указывать параметры явно. Например, вот так:
#Подключим библиотеку import pandas as pd #Прочитаем данные data = pd.read_csv('1.csv',sep=';',encoding='cp1251') print(data)
Данная программа прочтет CSV файл в стандарной виндовой кодировке с разделитем «;»:
Результатом выполнения метода read_csv является объект DataFrame. Этот объект позовляет производить различные манипуляции с данными. Например, можно получить таблицу, содержащую отдельные столбцы исходной таблицы, или наоборот, взять с удалением лишних столбцов:
#Подключим библиотеку import pandas as pd #Прочитаем данные data = pd.read_csv('company.csv') #Получим входные и выходные значения Y = data['NotFired'] X = data.drop(['UserId','Name','NotFired'], axis=1)
Если мы посмотрим типы наших переменных X и Y:
print(type(X)) print(type(Y))
То увидим, что X — это все тот же DataFrame, а Y — это Series
Зачем нам нужны подобные манипуляции? Предположим, что мы хотим найти в наших данных закономерности, для чего обучим какую-нибудь AI-модель, которых в Python вагон и маленькая тележка.
Нам дан список сотрудников компании, где имеется их имена, возраст, табельный номер, образование, бальная оценка навыков, и признак, попадает ли сотрудник под сокращение в связи с грядущим кризисом (поле NotFired, если 1 — то сотрудник остаётся работе, 0 — его увольняют). Таким образом, NotFired — это целевая переменная, и нам нужно вывести, как она зависит от остальных переменных. Для чего? Допустим, мы хотим узнать, нет ли при увольнении дискриминации по полу или возрасту. Такие столбцы, как имя и табельный номер нам тут не нужны, мы их удаляем. А NotFired удаляем потому, что эта переменная у нас должны быть в массиве Y — то, что мы хотим предсказать. Остальные — это X — данные для предсказания.
Ну а дальше мы можем обучить модель, например, решающее дерево:
#Обучим модель model = DecisionTreeClassifier(random_state=241) model.fit(X, Y)
А вот так можно создать датафрейм «с нуля»:
#создание DataFrame по столбцам с помощью словарей frame = pd.DataFrame({'numbers':range(10), 'chars':['a']*10})
В данном примере мы создаем датафейм с полями numbers и chars. Столбец numbers заполняется числами от 0 до 9 (10 не включаем), а столбец chars буквами ‘a’:
Обратится к столбцам дата фрейма можно через свойство columns:
Размер таблицы можно получить через свойство shape:
Как видим, это свойство возвращает кортеж.
Добавить строку можно методом append:
new_line = {'Name':'Perov', 'Birth':'22.03.1990', 'City':'Penza'} #добавление строки в DataFrame frame = frame.append(new_line, ignore_index=True)
Обратите внимание, что метод append не меняет существующую таблицу, а возвращает модифицированную (то есть создает копию и ее правит).
Для того, чтобы добавить столбец, достаточно просто присвоить значение новому столбцу (которого раньше не было):
#добавление столбца в DataFrame frame['IsStudent'] = [False]*5 + [True]*2
Наконец, дата фрейм можно сохранить в файл (в текстовом формате):
#запись DataFrame в файл frame.to_csv('updated_dataset.csv', sep=',', header=True, index=False)
В параметрах мы можем задать также разделитель, наличие заголовка, индекса, а также кодировку (все как и при чтении).
Comments
So empty here ... leave a comment!