Панды…. Аббревиатура панельных данных. Panda - это модуль библиотеки Python для анализа и обработки данных. Как говорится, данные - один из важнейших аспектов в области машинного обучения. Машины не могут быть обучены до тех пор, пока им не будут предоставлены данные (потому что: Ага !!! Чему он научится ???). При этом, в этом мире бесконечного количества форматов данных и их неравномерного распределения, данные не будут каждый раз представлять себя красиво и красиво (черт возьми! Это большой беспорядок). Здесь на помощь приходит Панда. Panda делает очистку, форматирование, уточнение и всевозможные манипуляции данными в миллионы раз быстрее и эффективнее! Его простота использования, открытый исходный код, фантастическая документация, огромное сообщество, активная разработка с момента его первоначального выпуска - это лишь некоторые из функций, которыми panda обязана своей известностью среди специалистов по данным.
Без каких-либо дополнительных обязательств давайте запачкаем руки и познакомимся с некоторыми из основных функций, которые может предложить Panda.
ПРИМЕЧАНИЕ. В этом посте я предполагаю, что на вашем компьютере уже установлена панда. В противном случае вы можете сделать это в первую очередь, например, "pip install pandas".
Начнем с базовой настройки и использования панды!
#basic usage
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import style
style.use('fivethirtyeight')
stats = {
'Day':[1,2,3,4,5,6],
'Visitors':[43,34,65,56,29,76],
'Bounce_Rate':[65,67,78,65,45,52]
}
df = pd.DataFrame(stats)
print(df.head())
print(df.tail())
print(df.head(2))
print(df.tail(2))
print(df.shape)
df.set_index
('Day', inplace = True)
print(df)
df.index.name = 'Day'
df.reset_index(inplace = True)
print(df)
Теперь перейдем к некоторым основным операциям с колонками.
#column operations import pandas as pd import matplotlib.pyplot as plt from matplotlib import style style.use('fivethirtyeight') stats = { 'Day':[1,2,3,4,5,6], 'Visitors':[43,34,65,56,29,76], 'Bounce_Rate':[65,67,78,65,45,52] } df = pd.DataFrame(stats) AXIS = 0 STANDS FOR ROWS df.drop(['Day', 'Visitors'], axis = 1, inplace = True) print(df.Bounce_Rate) print('Bounce_Rate') df.rename(columns = {'Day': 'day', 'Visitors': 'visitors'}, inplace = True) print(df.columns)
Некоторые основные операции фильтрации и сортировки можно выполнить следующим образом.
#filtering and sorting import pandas as pd import matplotlib.pyplot as plt from matplotlib import style style.use('fivethirtyeight') stats = { 'Day':[1,2,3,4,5,6], 'Visitors':[43,34,65,56,29,76], 'Bounce_Rate':[65,67,78,65,45,52] } df = pd.DataFrame(stats) x = df.Visitors.sort_values() print(x) ''' OR another method to do the same would be: x = df['Visitors'].sort_values() print(x) ''' x = df.sort_values('Day') print(x) x = df[df.Day > 2] print(x) x = df[(Day > 2) and (Visitors > 29)] print(x) y = df[(Day > 2) or (Visitors > 29)] print(y)
Давайте прочитаем из CSV-файла и запишем в новый CSV-файл.
#csv operations import pandas as pd df = pd.read_csv('somecsvfile.csv') df.to_csv('anothercsvfile.csv') df['somecolumn'].to_csv('yetanothercsvfile.csv') df = pd.read_csv('somecsvfile.csv', usecols = ['column_name', 'another_column_name']) df = pd.read_csv('somecsvfile.csv', index_col = 0) df.rename(columns = {'originalname' : 'newname'}, inplace = True)
Давайте читать со страницы HTML.
import pandas as pd df = pd.read_html('here goes the url link of the website') print(df) print(df[0]) print(df[0][0]) for item in df[0][0][1:]: print(str(item))
Теперь давайте попробуем объединить два фрейма данных pandas четырьмя разными способами, а именно: объединение, объединение, добавление и объединение. На первый взгляд может показаться, что все они работают одинаково, но не ошибитесь, потому что все они имеют очень уникальные и разные методологии работы.
#CONCATENATING AND APPENDING import pandas as pd df1 = pd.DataFrame({'HPI':[80,85,88,85], 'Int_rate':[2, 3, 2, 2], 'US_GDP_Thousands':[50, 55, 65, 55]}, index = [2001, 2002, 2003, 2004]) df2 = pd.DataFrame({'HPI':[80,85,88,85], 'Int_rate':[2, 3, 2, 2], 'US_GDP_Thousands':[50, 55, 65, 55]}, index = [2005, 2006, 2007, 2008]) df3 = pd.DataFrame({'HPI':[80,85,88,85], 'Int_rate':[2, 3, 2, 2], 'Low_tier_HPI':[50, 52, 50, 53]}, index = [2001, 2002, 2003, 2004]) concat_1 = pd.concat([df1, df2]) print concat concat_2 = pd.concat([df1, df2, df3]) print(concat_2) df4 = df1.append(df2) print(df4) s = pd.Series([40, 90, 65], index = ['HPI', 'Int_rate', 'US_GDP_Thousands']) df5 = df1.append(s, ignore_index = True) print(df5) #JOINING AND MERGING import pandas as pd df1 = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) df2 = pd.DataFrame( {'id':[1,2,3,4,5], 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) first_merge = pd.merge(df1, df2, on = 'id') print(first_merge) second_merge = pd.merge(df1, df2, on = ['id', 'subject_id']) print(second_merge) # MERGE USING 'HOW' ARGUMENT """ THERE ARE 4 TYPES OF MERGING METHOD USING 'HOW' ARGUMENT 1) LEFT OUTER 2) RIGHT OUTER 3) FULL OUTER $) INNER """ left_merge = pd.merge(df1, df2, on = 'subject_id', how = 'left') print(left_merge) right_merge = pd.merge(df1, df2, on = 'subject_id', how = 'right') print(right_merge) outer_merge = pd.merge(df1, df2, on = 'subject_id', how = 'outer') print(outer_merge) inner_merge = pd.merge(df1, df2, on = 'subject_id', how = 'inner') print(inner_merge) ''' JOINING WILL BE PERFORMED ON INDEX. JOIN OPERATION HONORS THE OBJECT ON WHICH IT IS CALLED. SO, A.JOIN(B) IS NOT EQUAL TO B.JOIN(A). ''' df1.set_index('subject_id', inplace=True) df3.set_index('subject_id', inplace=True) right_joined = df1.join(df3, how="right") print(right_joined) right_joined = df1.join(df3, how="left") print(left_joined) right_joined = df1.join(df3, how="inner") print(inner_joined) right_joined = df1.join(df3, how="outer") print(outer_joined)
Один из очень частых случаев в наборах данных - это отсутствие значений. NAN (не число). Для обработки этих недостающих значений в Panda есть несколько встроенных функций, которые мы можем использовать.
#handling missing data import pandas as pd df = pd.read_csv('http://bit.ly/uforeports') df.isnull().tail() df.notnull().tail() df.isnull().sum() df[df.City.isnull()] df.dropna(how = 'any') df.dropna(how = 'all') df.dropna(subset = ['City', 'Shape Reported'], how = 'any')\ df.fillna(value = 'heregoesthevalueyouwanttofill')
Quandl - это онлайн-сайт с множеством наборов данных по различным областям (например, американские индексы цен на жилье, акции, товары, иностранная валюта и т. Д.). Для получения дополнительной информации о Quandl посетите https://www.quandl.com. Давайте настроим Quandl с пандами для извлечения данных из Quandl и использования их в анализе.
#setting up Quandl with pandas import quandl api_key = 'yoursuperamazingquandlAPIkey' df = quandl.get('heregoesthequandlcode', authtoken = api_key) print(df.head())
На этом мы завершаем этот пост, посвященный работе с библиотекой модулей Pandas. Pandas - это очень многофункциональный модуль, который предлагает множество функций, большинство из которых не может быть легко описано в одном сообщении в блоге или даже в серии сообщений в блоге. Этот пост был призван познакомить вас с библиотекой и продемонстрировать ее возможности, но он не охватывает даже малейшей части того, что могут предложить настоящие панды. Таким образом, если вы хотите узнать больше о пандах, перейдите на официальную страницу документации.
Сноска: у меня есть репозиторий Github, который содержит весь приведенный выше код в хорошо прокомментированной структуре вместе со всеми необходимыми ссылками, которые я использовал для изучения этой прекрасной библиотеки. . Я буду обновлять этот репозиторий со временем и по мере того, как узнаю что-то стоящее.
Если вам понравилась эта статья, не бойтесь аплодировать.
Будьте на связи. До скорого !