Настройка импорта с помощью pandas
Пакет pandas отлично справляется со многими трудностями, с которыми вы столкнётесь при импорте данных: комментарии в плоских файлах, пустые строки и пропущенные значения (NA или NaN). В завершение этой главы вы импортируете повреждённую копию набора данных Titanic — файл titanic_corrupt.txt. Он содержит комментарии после символа '#' и использует табуляцию в качестве разделителя.
Основные аргументы функции pd.read_csv():
sep— задаёт разделитель.','— для файлов с разделителем-запятой.'\t'— для файлов с разделителем-табуляцией.
comment— символ, после которого в файле начинается комментарий; весь текст после него игнорируется.na_values— список строк, которые следует интерпретировать какNA/NaN. По умолчанию ряд значений уже распознаётся как пропущенные; этот аргумент позволяет добавить дополнительные.
Это упражнение является частью курса
Введение в импорт данных в Python
Инструкции к упражнению
- Заполните аргументы функции
pd.read_csv(), чтобы корректно импортировать файлtitanic_corrupt.txtс помощью pandas:sepзадаёт разделитель и работает так же, как аргументdelimiterвnp.loadtxt(). Обратите внимание, что импортируемый файл использует табуляцию в качестве разделителя.commentпринимает символ, после которого в файле начинается комментарий — в данном случае это'#'.na_valuesпринимает список строк, которые будут интерпретироваться какNA/NaN— в данном случае строку'Nothing'.
- Выполните остальную часть кода, чтобы вывести первые строки полученного DataFrame и построить гистограмму значений столбца
'Age'для пассажиров Титаника.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
# Assign filename: file
file = 'titanic_corrupt.txt'
# Import file: data
data = pd.read_csv(file, sep='____', comment='____', na_values=[____])
# Print the head of the DataFrame
print(data.head())
# Plot 'Age' variable in a histogram
pd.DataFrame.hist(data[['Age']])
plt.xlabel('Age (years)')
plt.ylabel('count')
plt.show()