Loading...
NikolaKalev avatar NikolaKalev 1 Точки

Pandas "str.extract" how exactly works

Здравейте, някой може да даде малко повече инфо как точно работи функцията "str.extract(patflags=0expand=None)"? По-точно частта "parts = tb["sex_and_age"].str.extract("(\D)(\d+)(\d{2})", expand = True)" от лекцията "Data Tidying and Cleaning" -> намира се на slide 9. Благодаря предварително :) 

0
Data Science
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

така значи string extract или както и да се нарече, е  функция/свойство на поредица от символи,подаваш  някаква поредица от символи и после на базата на някакво условие взимаш част от нея.

Този пример които гледаш от 9 слайд е с regex. Като regex означава регулярен израз в случая ("(\D)(\d+) този израз означава - вземи ми някаква цифра от началото като може да е една или повече. D-показва на израза да търси число (\d+)(\d{2} му казва че трябва да са точно 2 числа

И в случая какво се случва примерно имаш колонка с m15  - минаваш с string.extract с това подадено условие и тои  интерпретатора гледа. Аха тук имам 1 буква и 2 числа и ти ги разделя като получаваш 2 колони : m и 15.

 

Сега това е обширна тема,особено regex. Това което ти трябва да разбереш е че, string.extract е метод за обработка на поредица от символи на база на някакво условие. Това е едно от основните неща в  програмирането. Има много начини и неща това да се направи.

Ето ти друг пример : примерно string AAAADDDDCCCCBBBB

искаш да вземеш примерно само първите четири символа:

string.extract(len(4)) и ще получиш АААА

може би бъркам малко синтаксиса но това е логиката,сорри но Python не ми е основния език,тепърва му свиквам и на него :Д

това другото което вижваш като pat,flags,expand - това са свойства на метода string.extract  в случая от слайда

pat= ("(\D)(\d+)(\d{2})" това ти е условието по което ще разделяш стринга, expand=true това означава че като получиш резултата да ти го създаде отделно а не на място и тн.това са вече малки подробности.

Стана малко дълго обяснение.Ако имаш въпроси питай regex е едно от най-неприятните неща в програмирането. regex и datatime :D  2та малки ужаса.

0
19/12/2017 06:44:43
NikolaKalev avatar NikolaKalev 1 Точки

Здравей и благодаря за подробната информация. Може ли малко повече инфо за частта "(\D)(\d+)” и  “(\d+)(\d{2})” и как точно функционира, какво означава малкото/голямото D, наклонената черта, плюсовете, къдравите скоби и кое как се използва, т.е. как мога да науча как функционират?

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

 "(\D)(\d+)” и  “(\d+)(\d{2}) значи това как функционират е цяла наука. Вярвай ми просто напиши regex и ще ти излезе много информация. Реално в случая \D показва че търсиш число като d+ показва че трябва да е едно или повече. а \d+)(\d{2})  казва на интерпретатора като намериш таква поредица от числа едно или повече вземи само 2 (\d{2})  това показва че като намериш числата взимаш само 2те. тоест :

имаш примерно: m015 както е на тая лекция като гледаш записа ще видиш че Данчо променя ръчно името на колоните на m0015 m 1530 и тн.. и като пусне този регекс ще получи следните 2 групи 00 15 и 15 30 и  тн.. и после вече почваш да правиш с тях каквото искаш. 

Сега да ти обеснявам подробно ще се омагъосаш,вярвай ми дори опитни програмисти заобикалят регекс когато могат. да полезен е но е идиотски направен. Примерно на programng fundamentals моя изпит regex задачата не я направих знаех как но ме мързеше.После на изпита по mysql db имаше една задача решаваше се ок с регекс но тои отказа да сработи беше подобна на този пример пак търсехме числа но от 0-9 и откриваше всичките без 9 :Д не ме питай защо не работеше,идея си нямам и stackoverflow да питаш и тои ще ти каже че трябва да работи. Честно казано за нивото и целта на курса не ти трябва да забиваш в regex. има толкова много неща. ^ -този символ може да е,начало на стринг или отрицание  примерно горе ако имаше (\^D) щеше да ти търси букви а не числа и тн и тн. $-този пък означава край на стринг и там да търсиш нещо. Мазало голямо е datetime и regex са кошмар ако забиеш в тях може с дни да незнаеш какво се случва.За data science това не ти трябва. 

Ще ти дам пример колоната м015 може да се раздели и като стринг примерно можеше да направиш  name(името на колоната-m015) = len(m015,-2) и това ще ти върне  name=15

string има и функции като skip take и тн. При skip му казваш ти си поредица от символи но изпусни няколко които са число int, И примерно казваш name=m015,skip(2) и това ще върне 15. 

общо взето това е логиката,сега синтаксиса сигурно не е правилен но тои се намира в нета или в документацията на езика/технологията.Има много сайтове за тестване на регулярни изрази https://regexr.com/ ,https://regex101.com/ тези 2та са доста популярни но е мъка :Д и всеки програмен език си има регекс с някакви особености...

ако искаш тук в форума съм оставил skype и фб, аз съм в една от групите които се организирахме която Данчо спомена на лекцията вчера ще те включим в събиранията.Примерно довечера имаме едно след 18 часа.

ps. Не намерих лично съобщение опция на форума :Д май няма :Д или още спя рано сутринта.

0
20/12/2017 06:32:38
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

https://www.dataquest.io/blog/regular-expressions-data-scientists/ ето намерих и една блог статия точно за pandas кое и как.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.