Чтение разделенного точкой с запятой (';') необработанного текста в Python - PullRequest
0 голосов
/ 08 февраля 2020

Мне удалось найти некоторые решения в Интернете, но часто без объяснения причин. Я новичок в Python и обычно решаю переделать мои данные в Excel. Однако я хотел бы узнать, как справиться с такой проблемой, как следующая:

Мне дали данные для Бразилии в этой форме. На сайте написано "сохранить файл в формате csv". Это похоже на беспорядок ...

Espírito Santo;
Dados;
Ano;População total;Homens;Mulheres;Nascimentos;Óbitos;Taxa de Crescimento Geométrico;Taxa Bruta de Natalidade;Taxa Bruta de Mortalidade;Esperança de Vida ao Nascer;Esperança de Vida ao Nascer - Homens;Esperança de Vida ao Nascer - Mulheres;Taxa de Mortalidade Infantil;Taxa de Mortalidade Infantil - Homens;Taxa de Mortalidade Infantil - Mulheres;Taxa de Fecundidade Total;Razão de Dependência - Jovens 0 a 14 anos;Razão de Dependência - Idosos 65 ou mais anos;Razão de Dependência;Índice de Envelhecimento;
2010;3596057;1772936;1823121;54018;19734;x;15.02;5.49;75.93;71.9;80.19;11.97;13.59;10.28;1.73;34.49;10.17;44.67;29.41;
2011;3642595;1795501;1847094;55387;19923;1.29;15.21;5.47;76.36;72.35;80.59;11.3;12.87;9.66;1.77;33.72;10.41;44.13;30.77;
2012;3689347;1818188;1871159;55207;20142;1.28;14.96;5.46;76.76;72.78;80.96;10.69;12.2;9.1;1.75;32.98;10.68;43.65;32.17;
2013;3736386;1841035;1895351;56785;20396;1.27;15.2;5.46;77.14;73.19;81.31;10.14;11.6;8.6;1.8;32.29;10.97;43.26;34.22;
2014;3784361;1864376;1919985;57964;20676;1.28;15.32;5.46;77.51;73.58;81.64;9.64;11.06;8.15;1.83;31.73;11.31;43.04;35.59;
2015;3832826;1887984;1944842;58703;20979;1.28;15.32;5.47;77.85;73.95;81.95;9.19;10.56;7.74;1.85;31.29;11.69;42.98;37.44;
2016;3879376;1910629;1968747;55091;21282;1.21;14.2;5.49;78.18;74.31;82.24;8.78;10.11;7.38;1.73;30.84;12.13;42.97;39.35;
2017;3925341;1932993;1992348;58530;21624;1.18;14.91;5.51;78.49;74.65;82.5;8.42;9.71;7.06;1.84;30.52;12.61;43.13;41.31;
2018;3972388;1955930;2016458;58342;22016;1.2;14.69;5.54;78.79;74.97;82.76;8.09;9.34;6.77;1.83;30.31;13.14;43.45;43.6;
2019;4018650;1978483;2040167;58106;22419;1.16;14.46;5.58;79.06;75.27;82.99;7.79;9;6.52;1.83;30.12;13.71;43.83;45.45;

Я использовал MSWord, чтобы заменить ";" с помощью "," и импорта Excel из текста, чтобы попытаться получить более знакомый фрейм данных.

Как бы вы подошли к данным в этой форме, используя Python? Сохранить как .csv, а затем снова импортировать с pandas? Я надеюсь на лучшее решение, сохранив его в виде "" "закрытой строки.

1 Ответ

1 голос
/ 08 февраля 2020

Вы можете указать синтаксическому анализатору csv, что это за разделитель, в данном случае это ';' *

with open('filepath.csv') as csv_file:
    csv.reader(csv_file, delimiter=';')

Как вы получаете эти данные? Как файл? Как строка?

Если у вас есть файл, вы можете использовать pandas для чтения csv, который даст вам pandas DataFrame:

pandas.read_csv('filepath.csv', delimiterstr=';')

Более подробную информацию вы можете найти здесь: https://realpython.com/python-csv/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...