Тема садржаја:
- ПиСпарк ДатаФраме у ЈСОН користећи То_јсон() са ТоПандас()
- ПиСпарк ДатаФраме у ЈСОН користећи ТоЈСОН()
- ПиСпарк ДатаФраме у ЈСОН користећи Врите.јсон()
Хајде да размотримо једноставан ПиСпарк ДатаФраме у свим примерима и претворимо га у ЈСОН користећи поменуте функције.
Потребан модул:
Инсталирајте ПиСпарк библиотеку у своје окружење ако још није инсталирана. Можете се обратити следећој команди да бисте је инсталирали:
пип инсталл писпарк
ПиСпарк ДатаФраме у ЈСОН користећи То_јсон() са ТоПандас()
Метода то_јсон() доступна је у Пандас модулу који конвертује Пандас ДатаФраме у ЈСОН. Ову методу можемо да искористимо ако конвертујемо наш ПиСпарк ДатаФраме у Пандас ДатаФраме. Да би се ПиСпарк ДатаФраме претворио у Пандас ДатаФраме, користи се метода тоПандас(). Хајде да видимо синтаксу то_јсон() заједно са њеним параметрима.
Синтакса:
датафраме_објецт.тоПандас().то_јсон(ориент,индек,...)
- Ориент се користи за приказ конвертованог ЈСОН-а као жељеног формата. Потребно је „записе”, „табелу”, „вредности”, „колоне”, „индекс”, „подела”.
- Индекс се користи за укључивање/уклањање индекса из конвертованог ЈСОН стринга. Ако је подешено на „Труе“, индекси се приказују. У супротном, индекси неће бити приказани ако је оријентација „раздвојена“ или „табела“.
Пример 1: Оријентирајте се као „записи“
Направите „скиллс_дф“ ПиСпарк ДатаФраме са 3 реда и 4 колоне. Конвертујте овај ДатаФраме у ЈСОН тако што ћете навести оријент параметар као „записи“.
импорт писпаркувоз панде
из писпарк.скл импорт СпаркСессион
линукхинт_спарк_апп = СпаркСессион.буилдер.аппНаме( 'Линук савет' ).гетОрЦреате()
Подаци о # вештинама са 3 реда и 4 колоне
вештине =[{ 'ид' : 123 , 'особа' : 'Душо' , 'вештина' : 'сликање' , 'награда' : 25000 },
{ 'ид' : 112 , 'особа' : 'Моуни' , 'вештина' : 'плес' , 'награда' : 2000 },
{ 'ид' : 153 , 'особа' : 'Туласи' , 'вештина' : 'читање' , 'награда' : 1200 }
]
# креирајте оквир података о вештинама од горњих података
скиллс_дф = линукхинт_спарк_апп.цреатеДатаФраме(скиллс)
# Подаци о стварним вештинама
скиллс_дф.схов()
# Конвертујте у ЈСОН користећи то_јсон() са оријентом као 'записима'
јсон_скиллс_дата = скиллс_дф.тоПандас().то_јсон(ориент= 'записи' )
принт(јсон_скиллс_дата)
Излаз:
+---+------+-----+--------+
| ид|особа|награда| вештина|
+---+------+-----+--------+
| 123 | Хонеи| 25000 |сликање|
| 112 | Моуни| 2000 | данце|
| 153 |Туласи| 1200 | читање|
+---+------+-----+--------+
[{ 'ид' : 123 , 'особа' : 'Душо' , 'награда' : 25000 , 'вештина' : 'сликање' },{ 'ид' : 112 , 'особа' : 'Моуни' , 'награда' : 2000 , 'вештина' : 'плес' },{ 'ид' : 153 , 'особа' : 'Туласи' , 'награда' : 1200 , 'вештина' : 'читање' }]
Можемо видети да је ПиСпарк ДатаФраме конвертован у ЈСОН низ са речником вредности. Овде кључеви представљају име колоне, а вредност представља вредност реда/ћелије у ПиСпарк ДатаФраме-у.
Пример 2: Оријентација као „Сплит“
ЈСОН формат који враћа „сплит“ оријент укључује називе колона које имају листу колона, листу индекса и листу података. Следи формат „сплит” оријента.
# Претворите у ЈСОН користећи то_јсон() са оријентацијом као 'сплит'
јсон_скиллс_дата = скиллс_дф.тоПандас().то_јсон(ориент= 'разделити' )
принт(јсон_скиллс_дата)
Излаз:
{ 'колоне' :[ 'ид' , 'особа' , 'награда' , 'вештина' ], 'индекс' :[ 0 , 1 , 2 ], 'подаци' :[[ 123 , 'Душо' , 25000 , 'сликање' ],[ 112 , 'Моуни' , 2000 , 'плес' ],[ 153 , 'Туласи' , 1200 , 'читање' ]]}Пример 3: Оријентирајте као „индекс“
Овде се сваки ред из ПиСпарк ДатаФраме-а повлачи у облику речника са кључем као именом колоне. За сваки речник, позиција индекса је наведена као кључ.
# Конвертујте у ЈСОН користећи то_јсон() са оријентом као 'индексом'
јсон_скиллс_дата = скиллс_дф.тоПандас().то_јсон(ориент= 'индекс' )
принт(јсон_скиллс_дата)
Излаз:
{ '0' :{ 'ид' : 123 , 'особа' : 'Душо' , 'награда' : 25000 , 'вештина' : 'сликање' }, '1' :{ 'ид' : 112 , 'особа' : 'Моуни' , 'награда' : 2000 , 'вештина' : 'плес' }, '2' :{ 'ид' : 153 , 'особа' : 'Туласи' , 'награда' : 1200 , 'вештина' : 'читање' }}Пример 4: Оријентација као „колоне“
Колоне су кључ за сваки запис. Свака колона садржи речник који узима вредности колона са бројевима индекса.
# Конвертујте у ЈСОН користећи то_јсон() са оријентом као 'колоне'
јсон_скиллс_дата = скиллс_дф.тоПандас().то_јсон(ориент= 'колоне' )
принт(јсон_скиллс_дата)
Излаз:
{ 'ид' :{ '0' : 123 , '1' : 112 , '2' : 153 }, 'особа' :{ '0' : 'Душо' , '1' : 'Моуни' , '2' : 'Туласи' }, 'награда' :{ '0' : 25000 , '1' : 2000 , '2' : 1200 }, 'вештина' :{ '0' : 'сликање' , '1' : 'плес' , '2' : 'читање' }}Пример 5: Оријентација као „вредности“
Ако су вам потребне само вредности у ЈСОН-у, можете ићи на оријентацију „вредности“. Приказује сваки ред на листи. Коначно, све листе се чувају у листи. Овај ЈСОН је типа угнежђене листе.
# Претворите у ЈСОН користећи то_јсон() са ориентом као 'вредностима'
јсон_скиллс_дата = скиллс_дф.тоПандас().то_јсон(ориент= 'вредности' )
принт(јсон_скиллс_дата)
Излаз:
[[ 123 , 'Душо' , 25000 , 'сликање' ],[ 112 , 'Моуни' , 2000 , 'плес' ],[ 153 , 'Туласи' , 1200 , 'читање' ]]Пример 6: Оријентација као „сто“
Оријентација „табела“ враћа ЈСОН који укључује шему са именима поља заједно са типовима података колона, индексом као примарним кључем и Пандас верзијом. Имена колона са вредностима се приказују као „подаци“.
# Конвертујте у ЈСОН користећи то_јсон() са оријентом као 'табела'
јсон_скиллс_дата = скиллс_дф.тоПандас().то_јсон(ориент= 'сто' )
принт(јсон_скиллс_дата)
Излаз:
{ 'шема' :{ 'поља' :[{ 'име' : 'индекс' , 'тип' : 'цео број' },{ 'име' : 'ид' , 'тип' : 'цео број' },{ 'име' : 'особа' , 'тип' : 'низ' },{ 'име' : 'награда' , 'тип' : 'цео број' },{ 'име' : 'вештина' , 'тип' : 'низ' }], 'Примарни кључ' :[ 'индекс' ], 'пандас_версион' : '1.4.0' }, 'подаци' :[{ 'индекс' : 0 , 'ид' : 123 , 'особа' : 'Душо' , 'награда' : 25000 , 'вештина' : 'сликање' },{ 'индекс' : 1 , 'ид' : 112 , 'особа' : 'Моуни' , 'награда' : 2000 , 'вештина' : 'плес' },{ 'индекс' : 2 , 'ид' : 153 , 'особа' : 'Туласи' , 'награда' : 1200 , 'вештина' : 'читање' }]}Пример 7: Са параметром индекса
Прво, прослеђујемо параметар индекса тако што га постављамо на „Труе“. Видећете за сваку вредност колоне да се позиција индекса враћа као кључ у речнику.
У другом излазу, само се имена колона („колоне“) и записи („подаци“) враћају без позиција индекса пошто је индекс постављен на „Фалсе“.
# Конвертујте у ЈСОН користећи то_јсон() са индек=Труејсон_скиллс_дата = скиллс_дф.тоПандас().то_јсон(индек=Труе)
принт(јсон_скиллс_дата, ' \н ' )
# Конвертујте у ЈСОН користећи то_јсон() са индек=Фалсе
јсон_скиллс_дата= скиллс_дф.тоПандас().то_јсон(индек=Фалсе,ориент= 'разделити' )
принт(јсон_скиллс_дата)
Излаз:
{ 'ид' :{ '0' : 123 , '1' : 112 , '2' : 153 }, 'особа' :{ '0' : 'Душо' , '1' : 'Моуни' , '2' : 'Туласи' }, 'награда' :{ '0' : 25000 , '1' : 2000 , '2' : 1200 }, 'вештина' :{ '0' : 'сликање' , '1' : 'плес' , '2' : 'читање' }}{ 'колоне' :[ 'ид' , 'особа' , 'награда' , 'вештина' ], 'подаци' :[[ 123 , 'Душо' , 25000 , 'сликање' ],[ 112 , 'Моуни' , 2000 , 'плес' ],[ 153 , 'Туласи' , 1200 , 'читање' ]]
ПиСпарк ДатаФраме у ЈСОН користећи ТоЈСОН()
Метода тоЈСОН() се користи за претварање ПиСпарк ДатаФраме у ЈСОН објекат. У основи, враћа ЈСОН стринг који је окружен листом. Тхе [‘{колона:вредност,…}’,…. ] је формат који враћа ова функција. Овде се сваки ред из ПиСпарк ДатаФраме-а враћа као речник са именом колоне као кључем.
Синтакса:
датафраме_објецт.тоЈСОН()Може бити могуће проследити параметре као што су индекс, ознаке колона и тип података.
Пример:
Направите „скиллс_дф“ ПиСпарк ДатаФраме са 5 редова и 4 колоне. Конвертујте овај ДатаФраме у ЈСОН помоћу методе тоЈСОН().
импорт писпаркиз писпарк.скл импорт СпаркСессион
линукхинт_спарк_апп = СпаркСессион.буилдер.аппНаме( 'Линук савет' ).гетОрЦреате()
Подаци о # вештинама са 5 редова и 4 колоне
вештине =[{ 'ид' : 123 , 'особа' : 'Душо' , 'вештина' : 'сликање' , 'награда' : 25000 },
{ 'ид' : 112 , 'особа' : 'Моуни' , 'вештина' : 'музика/плес' , 'награда' : 2000 },
{ 'ид' : 153 , 'особа' : 'Туласи' , 'вештина' : 'читање' , 'награда' : 1200 },
{ 'ид' : 173 , 'особа' : 'трчао' , 'вештина' : 'музика' , 'награда' : 2000 },
{ 'ид' : 43 , 'особа' : 'Камала' , 'вештина' : 'читање' , 'награда' : 10000 }
]
# креирајте оквир података о вештинама од горњих података
скиллс_дф = линукхинт_спарк_апп.цреатеДатаФраме(скиллс)
# Подаци о стварним вештинама
скиллс_дф.схов()
# Претвори у ЈСОН низ
јсон_скиллс_дата = скиллс_дф.тоЈСОН().цоллецт()
принт(јсон_скиллс_дата)
Излаз:
+---+------+-----+----------+| ид|особа|награда| вештина|
+---+------+-----+----------+
| 123 | Хонеи| 25000 | сликарство|
| 112 | Моуни| 2000 |музика/плес|
| 153 |Туласи| 1200 | читање|
| 173 | Ран| 2000 | музика|
| 43 |Камала| 10000 | читање|
+---+------+-----+----------+
[ '{'ид':123,'персон':'Душо','призе':25000,'скилл':'паинтинг'}' , '{'ид':112,'персон':'Моуни','призе':2000,'скилл':'мусиц/данце'}' , '{'ид':153,'персон':'Туласи','призе':1200,'скилл':'реадинг'}' , '{'ид':173,'персон':'Ран','призе':2000,'скилл':'мусиц'}' , '{'ид':43,'персон':'Камала','призе':10000,'скилл':'реадинг'}' ]
У ПиСпарк ДатаФраме-у постоји 5 редова. Свих ових 5 редова се враћају као речник низова који су раздвојени зарезом.
ПиСпарк ДатаФраме у ЈСОН користећи Врите.јсон()
Метод врите.јсон() доступан је у ПиСпарк-у који уписује/чува ПиСпарк ДатаФраме у ЈСОН датотеку. Узима име/путање датотеке као параметар. У основи, враћа ЈСОН у више датотека (партициониране датотеке). Да бисмо их све спојили у једну датотеку, можемо користити методу цоалесце().
Синтакса:
датафраме_објецт.цоалесце( 1 ).врите.јсон(‘име_датотеке’)- Режим додавања – датафраме_објецт.врите.моде(‘аппенд’).јсон(‘филе_наме’)
- Режим преписивања – датафраме_објецт.врите.моде(‘оверврите’).јсон(‘филе_наме’)
Могуће је додати/заменити постојећи ЈСОН. Користећи врите.моде(), можемо додати податке прослеђивањем „аппенд“ или преписати постојеће ЈСОН податке тако што ћемо проследити „оверврите“ овој функцији.
Пример 1:
Направите „скиллс_дф“ ПиСпарк ДатаФраме са 3 реда и 4 колоне. Напишите овај ДатаФраме у ЈСОН.
импорт писпаркувоз панде
из писпарк.скл импорт СпаркСессион
линукхинт_спарк_апп = СпаркСессион.буилдер.аппНаме( 'Линук савет' ).гетОрЦреате()
Подаци о # вештинама са 3 реда и 4 колоне
вештине =[{ 'ид' : 123 , 'особа' : 'Душо' , 'вештина' : 'сликање' , 'награда' : 25000 },
{ 'ид' : 112 , 'особа' : 'Моуни' , 'вештина' : 'плес' , 'награда' : 2000 },
{ 'ид' : 153 , 'особа' : 'Туласи' , 'вештина' : 'читање' , 'награда' : 1200 }
]
# креирајте оквир података о вештинама од горњих података
скиллс_дф = линукхинт_спарк_апп.цреатеДатаФраме(скиллс)
# врите.јсон()
скиллс_дф.цоалесце( 1 ).врите.јсон( 'скиллс_дата' )
ЈСОН датотека:
Можемо видети да фасцикла скиллс_дата укључује партиционисане ЈСОН податке.
Хајде да отворимо ЈСОН датотеку. Видимо да су сви редови из ПиСпарк ДатаФраме-а конвертовани у ЈСОН.
У ПиСпарк ДатаФраме-у постоји 5 редова. Свих ових 5 редова се враћају као речник низова који су раздвојени зарезом.
Пример 2:
Направите „скиллс2_дф“ ПиСпарк ДатаФраме са једним редом. Додајте један ред претходној ЈСОН датотеци тако што ћете навести режим као „додати“.
импорт писпаркувоз панде
из писпарк.скл импорт СпаркСессион
линукхинт_спарк_апп = СпаркСессион.буилдер.аппНаме( 'Линук савет' ).гетОрЦреате()
вештине2 =[{ 'ид' : 78 , 'особа' : 'Мари' , 'вештина' : 'јахање' , 'награда' : 8960 }
]
# креирајте оквир података о вештинама од горњих података
скиллс2_дф = линукхинт_спарк_апп.цреатеДатаФраме(скиллс2)
# врите.јсон() са режимом додавања.
скиллс2_дф.врите.моде( 'додати' ).јсон( 'скиллс_дата' )
ЈСОН датотека:
Можемо видети подељене ЈСОН датотеке. Прва датотека садржи прве ДатаФраме записе, а друга датотека садржи други ДатаФраме запис.
Закључак
Постоје три различита начина да се ПиСпарк ДатаФраме претвори у ЈСОН. Прво смо разговарали о методи то_јсон() која се претвара у ЈСОН претварањем ПиСпарк ДатаФраме у Пандас ДатаФраме са различитим примерима узимајући у обзир различите параметре. Затим смо користили методу тоЈСОН(). На крају, научили смо како да користимо функцију врите.јсон() за писање ПиСпарк ДатаФраме у ЈСОН. Са овом функцијом могуће је додавање и преписивање.