எளிய தமிழில் Pandas-8

Loops & Functions

ஒரு டேட்டாஃப்பிரேமில் உள்ளவற்றை for லூப் மூலம் பல்வேறு விதங்களில் வெளிப்படுத்திக் காட்டலாம். அவை கீழே கொடுக்கப்பட்டுள்ளன. அடுத்து lambda எனும் ஒற்றை வரி பங்ஷன் மூலமும், user defined function மூலமும் டேட்டாஃப்பிரேம் மதிப்புகளில் மாற்றம் செய்வது எப்படி என்று காட்டப்பட்டுள்ளது. கடைசியாக reindex_like() எனும் பங்ஷன் மூலம் ஒரு டேட்டாஃப்பிரேமின் வடிவத்தை மற்றொரு டேட்டாஃப்பிரேமைப் போலவே அமைப்பது எப்படி என்று காட்டப்பட்டுள்ளது.


import pandas as pd
import numpy as np
l2 = [[90,83,67,83,45],[68,89,75,56,73],[58,88,60,90,100]]
df = pd.DataFrame(l2,columns=['Tamil','English','Maths','Science','Social'],index=['Ramesh','Suresh','Kamesh'],dtype='int32')
for i in df:
print (i)
for i in df.itertuples():
print (i)
for i,j in df.iteritems():
print (i)
print (j)
for i,j in df.iterrows():
print (i)
print (j)
print (df['Tamil'].isin ([68,58]))
print (df.apply(lambda x: x+2))
def hi(a,b):
return a+b
print (df.pipe(hi,2))
l2 = [[90,83,45],[68,89,73],[58,88,100]]
df2 = pd.DataFrame(l2,columns=['Tamil','English','Social'],index=['Ramesh','Suresh','Jagadesh'],dtype='int32')
print (df2)
print (df2.reindex_like(df))

கீழ்கண்டவாறு ஒரு டேட்டாஃப்பிரேமை உருவாக்கிக் கொள்வோம்.

l2 = [[90,83,67,83,45],[68,89,75,56,73],[58,88,60,90,100]]
df = pd.DataFrame(l2,columns=[‘Tamil’,’English’,’Maths’,’Science’,’Social’],index=[‘Ramesh’,’Suresh’,’Kamesh’],dtype=’int32′)

பின் for லூப் மூலம் அந்த டேட்டாஃப்பிரேமை iterate செய்தால், அது தலைப்புகளின் பெயர்களை மட்டும் வெளிப்படுத்துவதைக் காணலாம்.

for i in df:
print (i)

Tamil
English
Maths
Science
Social

டேட்டாஃப்பிரேமின் மீது itertuples எனக் கொடுத்து அதனை சுழற்சி செய்து பார்த்தால், அது ஒவ்வொரு row-ஆக வெளிப்படுத்துவதைக் காணலாம்.

for i in df.itertuples():
print (i)

Pandas(Index=’Ramesh’, Tamil=90, English=83, Maths=67, Science=83, Social=45)
Pandas(Index=’Suresh’, Tamil=68, English=89, Maths=75, Science=56, Social=73)
Pandas(Index=’Kamesh’, Tamil=58, English=88, Maths=60, Science=90, Social=100)

அதுவே iteritems எனக் கொடுத்து iterate செய்தால், column-ன் பெயர் மற்றும் அதில் சேமிக்கப்பட்டுள்ள row wise தரவுகள் ஆகியவற்றைத் தொடர்ந்து வெளிப்படுத்தும்.

for i,j in df.iteritems():
print (i)
print (j)

Tamil
Ramesh 90
Suresh 68
Kamesh 58
Name: Tamil, dtype: int32
.
.
.
.
Social
Ramesh 45
Suresh 73
Kamesh 100
Name: Social, dtype: int32

iterrows எனக் கொடுத்தால் row-ன் பெயர் மற்றும் அதில் சேமிக்கப்பட்டுள்ள column wise தரவுகள் ஆகியவற்றை வெளிப்படுத்தும்.

for i,j in df.iterrows():
print (i)
print (j)


Ramesh
Tamil 90
English 83
Maths 67
Science 83
Social 45
Name: Ramesh, dtype: int32
.
.
.
Kamesh
Tamil 58
English 88
Maths 60
Science 90
Social 100</span
Name: Kamesh, dtype: int32

ஒரு டேட்டாஃப்பிரேம் column-ல் உள்ள மதிப்புகள் குறிப்பிட்ட சில மதிப்புகளைக் கொண்டிருக்கின்றனவா இல்லையா என்பதை சோதிக்க isin என்பது பயன்படுகிறது.

print (df[‘Tamil’].isin ([68,58]))

Ramesh False
Suresh True
Kamesh True
Name: Tamil, dtype: bool

Lambda எனும் ஒற்றை வரி பங்ஷன் மூலம் அனைத்து மதிப்புகளுடனும் 2 கூட்டி காட்டப்பட்டுள்ளது.

print (df.apply(lambda x: x+2))

       Tamil English Maths Science Social
Ramesh 92    85      69    85      47
Suresh 70    91      77    58      75
Kamesh 60    90      62    92      102

அதே வேலை hi எனும் user defined function கொண்டு செய்யப்பட்டுள்ளது. டேட்டாஃப்பிரேமுடன் அந்த பங்ஷனை இணைக்க pipe பயன்பட்டுள்ளது.

def hi(a,b):
    return a+b
print (df.pipe(hi,2))

இங்கு df2 எனும் இரண்டாவது டேட்டாஃப்பிரேம் உருவாக்கப்பட்டுள்ளது. இதனை df-வுடன் ஒப்பிடும்போது ரமேஷ், சுரேஷ் ஆகிய இரண்டு இன்டெக்ஸ் மற்றும் தமிழ், இங்கிலீஷ், சோஷியல் ஆகிய மூன்று columns-ஐ மட்டும் பொதுவாகப் பெற்றுள்ளது.

l2 = [[90,83,45],[68,89,73],[58,88,100]]
df2 = pd.DataFrame(l2,columns=[‘Tamil’,’English’,’Social’],index=[‘Ramesh’,’Suresh’,’Jagadesh’],dtype=’int32′)
print (df2)

         Tamil English Social
Ramesh   90    83      45
Suresh   68    89      73
Jagadesh 58    88      100

எனவே df2-ன் இன்டெக்ஸை df போலவே அமைக்கும்போது இல்லாத rows, columns –க்கு null மதிப்பினை இட்டு வடிவத்தை அதே போலவே அமைக்கும்.

print (df2.reindex_like(df))

       Tamil English Maths Science Social
Ramesh 90.0  83.0    NaN   NaN     45.0
Suresh 68.0  89.0    NaN   NaN     73.0
Kamesh NaN   NaN     NaN   NaN     NaN

%d bloggers like this: