Привет, Хабр! Представляю вашему вниманию перевод статьи "Python?0????????????????????(3. ??????????Pandas?)".
Это третья статья из серии. Ссылки на предыдущие статьи: первая, вторая
В данной статье я объясню, как работать с библиотекой Pandas, чтобы создавать Decision Tree.
В pandas используются такие структуры, как Data frame и Series.
Рассмотрим их на примере следующей таблицы, напоминающей Excel.
Одна строка данных называется Series, столбцы — атрибутами этих данных, а вся таблица целиком — Data frame-ом.
Подключаем Excel-таблицу с помощью read_excel или ExcelWriter
Создание Data Frame из словаря (ассоциативного массива): словарь собирает вместе данные столбцов DataFrame
Создание Data Frame из массивов: сбор данных из строк DataFrame
Спасибо за прочтение!
Мы будем очень рады, если вы расскажете нам, понравилась ли вам данная статья, понятен ли перевод, была ли она вам полезна?
Это третья статья из серии. Ссылки на предыдущие статьи: первая, вторая
В данной статье я объясню, как работать с библиотекой Pandas, чтобы создавать Decision Tree.
3.1 Импортируем библиотеку
# импортируем pandas и прописываем, что далее мы будем ее указывать как pd
import pandas as pd
3.2 Data frame и Series
В pandas используются такие структуры, как Data frame и Series.
Рассмотрим их на примере следующей таблицы, напоминающей Excel.
Одна строка данных называется Series, столбцы — атрибутами этих данных, а вся таблица целиком — Data frame-ом.
3.3 Создаем Data frame
Подключаем Excel-таблицу с помощью read_excel или ExcelWriter
# Сохраняем Excel файл туда же, где находится и файл ipynb
df0 = pd.read_excel("data_golf.xlsx")
# выводим DataFrame как HTML таблицу
from IPython.display import HTML
html = "<div style='font-family:\"????\";'>"+df0.to_html()+"</div>"
HTML(html)
# Сохраняем в Excel файл (with автоматически выполняет f.close)
with pd.ExcelWriter("data_golf2.xlsx") as f:
df0.to_excel(f)
Создание Data Frame из словаря (ассоциативного массива): словарь собирает вместе данные столбцов DataFrame
# создание из словаря: сбор данных из столбцов
d = {
"Погода":["Ясно","Ясно","Облачно","Дождь","Дождь","Дождь","Облачно","Ясно","Ясно","Дождь","Ясно","Облачно","Облачно","Дождь"],
"Температура":["Жарко","Жарко","Жарко","Тепло","Холодно","Холодно","Холодно","Тепло","Холодно","Тепло","Тепло","Тепло","Жарко","Тепло"],
"Влажность":["Высокая","Высокая","Высокая","Высокая","Норм","Норм","Норм","Высокая","Норм","Норм","Норм","Высокая","Норм","Высокая"],
"Ветер":["Нет","Есть","Нет","Нет","Нет","Есть","Есть","Нет","Нет","Нет","Есть","Есть","Нет","Есть"],
"Гольф":["?","?","0","0","0","?","0","?","0","0","0","0","0","?"],
}
df0 = pd.DataFrame(d)
Создание Data Frame из массивов: сбор данных из строк DataFrame
# создание из массивов: сбор данных из строк
d = [["Ясно","Жарко","Высокая","Нет","?"],
["Ясно","Жарко","Высокая","Есть","?"],
["Облачно","Жарко","Высокая","Нет","0"],
["Дождь","Тепло","Высокая","Нет","0"],
["Дождь","Холодно","Норм","Нет","0"],
["Дождь","Холодно","Норм","Есть","?"],
["Облачно","Холодно","Норм","Есть","0"],
["Ясно","Тепло","Высокая","Нет","?"],
["Ясно","Холодно","Норм","Нет","0"],
["Дождь","Тепло","Норм","Нет","0"],
["ясно","Тепло","Норм","Есть","0"],
["Облачно","Тепло","Высокая","Есть","0"],
["Облачно","Жарко","Норм","Нет","0"],
["Дождь","Тепло","Высокая","Есть","?"],
]
# название столбцов и строк можно указать как columns и index соответственно. В случае, если их опускать, указывается соответствующий им номер.
df0 = pd.DataFrame(d,columns=["Погода","Температура","Влажность","Ветер","Гольф"],index=range(len(d)))
3.4 Получаем информацию из таблицы
# получение информации из таблицы
# количество строк и столбцов
print(df0.shape) # вывод (14, 5)
# получаем количество строк
print(df0.shape[0]) # вывод 14
# получаем названия столбцов
print(df0.columns) # вывод Index(['Погода', 'Температура', 'Влажность', 'Ветер', 'Гольф'], dtype='object')
# получаем названия строк (Название строки df0 - это автоматически присвоенный индекс)
print(df0.index) # вывод RangeIndex(start=0, stop=14, step=1)
3.5 Получаем значения loc iloc values
# получение значений
# получаем значение, указав строку и столбец
# получаем значение Влажности в строке под №1 (вторая сверху)
print(df0.loc[1,"Влажность"]) # вывод Высокая
# получаем значение, указав массив из нескольких строк и столбцов
# получаем значения Погоды и Гольфа из строк 1,2,4, и полученные данные тоже будут Data Frame-ом
df = df0.loc[[1,2,4],["погода","Гольф"]]
print(df)
# вывод
# Погода Температура Влажность Ветер Гольф
# 1 Ясно Жарко Высокая Есть ?
# 2 Облачно Жарко Высокая Нет 0
# 3 Дождь Тепло Высокая Нет 0
# 4 Дождь Холодно Норм Нет 0
# iloc позволяет индексировать строки и столбцы. Индексы отсчитываются от 0.
# получаем данные из строк с 1 по 3, не включая столбец Гольф. Так как iloc указывает индекс, если написать 1:4, то 4-ка включена не будет.
df = df0.iloc[1:4,:-1]
print(df)
# вывод
# Погода Температура Влажность Ветер
# 1 Ясно Жарко Высокая Есть
# 2 Облачно Жарко Высокая Нет
# 3 Дождь Тепло Высокая Нет
# получаем значение из одной строки (Series)
# получаем данные из самой первой строки. s это Series
s = df0.iloc[0,:]
# так же, как и со словарем, значение можно получить с помощью s["название столбца"]
print(s["Погода"]) # вывод Ясно
# все значения получаем в виде массива (numpy.ndarray).
print(df0.values)
3.6 Цикл данных, пройдемся по данным с помощью iterrows iteritems
# цикл данных, просматриваем данные
# в цикле проходимся по строкам. Смотрим данные по каждой строчке.
for i,row in df0.iterrows():
# i это название строки (индекс строки), row это Series
print(i,row)
pass
# в цикле проходимся по столбцам. Смотрим данные по вертикали.
for i,col in df0.iteritems():
# i это название столбца, col это Series
print(i,col)
pass
3.7 Частота value_counts
# частота вывода данных
# получаем все данные из столбца Погода. s это Series
s = df0.loc[:,"Погода"]
# получаем необходимое количество нужных данных
print(s.value_counts())
# вывод
# Ясно 5
# Дождь 5
# Облачно 4
# Name: Погода, dtype: int64
# Например, получили количество строк, когда встречается “Ясно”
print(s.value_counts()["Ясно"]) # Вывод 5
3.8 Извлекаем конкретные данные query
# извлечение конкретных данных
# получаем данные, когда Погода - Ясно.
print(df0.query("Погода=='Ясно'"))
# вывод
# Погода Температура Влажность Ветер Гольф
# 0 Ясно Жарко Высокая Нет ?
# 1 Ясно Жарко Высокая Есть ?
# 7 Ясно Тепло Высокая Нет ?
# 8 Ясно Холодно Норм Нет 0
# 10 Ясно Тепло Норм Есть 0
# получаем данные, когда Погода - ясно, и иду на гольф
print(df0.query("Погода=='Ясно' and Гольф=='0'"))
# вывод
# Погода Температура Влажность Ветер Гольф
# 8 Ясно Холодно Норм Нет 0
# 10 Ясно Тепло Норм Есть 0
# получаем данные, когда Погода - ясно, или иду на гольф
print(df0.query("Погода=='Ясно' or Гольф=='0'"))
# вывод
# Погода Температура Влажность Ветер Гольф
# 0 Ясно Жарко Высокая Нет ?
# 1 Ясно Жарко Высокая Есть ?
# 2 Облачно Жарко Высокая Нет 0
# 3 Дождь Тепло Высокая Нет 0
# 4 Дождь Холодно Норм Нет 0
# 6 Облачно Холодно Норм Есть 0
# 7 Ясно Тепло Высокая Нет ?
# 8 Ясно Холодно Норм Нет 0
# 9 Дождь Тепло Норм Нет 0
# 10 Ясно Тепло Норм Есть 0
# 11 Дождь Тепло Высокая Есть 0
# 12 Дождь Жарко Норм Нет 0
Спасибо за прочтение!
Мы будем очень рады, если вы расскажете нам, понравилась ли вам данная статья, понятен ли перевод, была ли она вам полезна?
urticazoku
?????????????
a-talentex Автор
?????????????????????????!