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

Location & Display properties

ஒரு டேட்டாஃப்பிரேமில் இருப்பவற்றை கொஞ்சம் கொஞ்சமாக நமது தேவைக்கு ஏற்றவாறு வெட்டி எடுத்து, பிரித்துப் பார்த்து புரிந்து கொள்வதற்கு உதவும் வழிமுறைகளை இப்பகுதியில் காணலாம். (Slicing – Dicing Methods) . மேலும் ஒரு டேட்டாஃப்பிரேம் திரையில் வெளிப்படும்போது அது எவ்வாறு அமைய வேண்டும் என்பதைக் கட்டுப்படுத்துவதற்கு உதவும் ஒருசில பண்புகளையும் இப்பகுதியில் காணலாம்.


import pandas as pd
df = pd.read_csv("./girls.csv")
print (df.shape)
print (df.columns)
print (df['fname']) # df.fname , df['fname','age']
print (df.loc[ 1:4 , 'fname' ])
print (df.loc[ [1,4] , 'fname' ])
print (df.loc[ : , 'age']>30 )
print (df.ix[1:4, 'fname' ])
print (df.ix[[1,4], 'fname' ])
print (df.ix[ : , 'age']>30 )
print (df.iloc[1:4,1:4])
print (df.iloc[[1,4],[1,4]])
print (df.iloc[[1,4],lambda x : [1,4]])
print (pd.get_option("display.max_rows")) # max_columns
pd.set_option("display.max_rows",5) # reset_option()
pd.set_option("display.max_columns",4) # reset_option()
print (df)
pd.reset_option("display.max_rows")
pd.reset_option("display.max_columns")
print (pd.describe_option("display.max_rows"))
with pd.option_context("display.max_rows",5):
print (df)

இங்கு girls.csv எனும் கோப்பில் ஒருசில யுவதிகளின் பெயர், துணைப் பெயர், அவர்களின் வயது, அவர்கள் வகிக்கும் பதவி, அவர்களுடைய தொலைபேசி எண் மற்றும் அவர்கள் வசிக்கும் ஊர் ஆகிய விவரங்கள் எல்லாம் கொடுக்கப்பட்டுள்ளன. இவற்றையெல்லாம் ஒரு டேட்டாஃப்பிரேமாக மாற்றிய பின்னர் அதன்மீது செயல்படும் shape எனும் பண்பு அதிலுள்ள rows, columns- ஐ வெளிப்படுத்தும். அதாவது எத்தனை யுவதிகளின் விவரங்கள் எத்தனை தலைப்புகளின் கீழ் கொடுக்கப்பட்டுள்ளன எனும் எண்ணை வெளிக்காட்டும். columns எனும் பண்பு என்னென்ன தலைப்புகளின் கீழ் கொடுக்கப்பட்டுள்ளன என்பதை வெளிக்காட்டும்.

df = pd.read_csv(“./girls.csv”)
print (df.shape)
(10, 7)
print (df.columns)
Index([‘id’, ‘fname’, ‘lname’, ‘age’, ‘desig’, ‘no’, ‘place’], dtype=’object’)

ஏதேனும் ஒரு column இன் கீழ் அமையும் விவரங்களைப் பெற df.fname எனக் கொடுக்கலாம் அல்லது df[‘fname’] எனவும் கொடுக்கலாம். ஒன்றுக்கும் மேற்பட்ட columns- ஐக் கூட இம்முறையிலேயே கொடுக்கலாம்.
print (df[‘fname’]) # df.fname , df[‘fname’,’age’]
0 Nithya
1 Nandhini
2 Madhuri
3 Kavitha
4 Vijaya
5 Aarthi
6 Lavanya
7 Meena
8 Gayathri
9 Kavitha
Name: fname, dtype: object

ஏதேனும் ஒரு குறிப்பிட்ட column-ன் கீழ், ஒரு குறிப்பிட்ட row- இல் இருக்கும் தகவல்களை மட்டும் பெற loc எனும் பண்பு பயன்படுகிறது.
இங்கு 1 முதல் 4 முடிய index எண்ணைக் கொண்ட தரவுகள் மட்டும் எடுத்துக் காட்டப்பட்டுள்ளன .
print (df.loc[ 1:4 , ‘fname’ ])
1 Nandhini
2 Madhuri
3 Kavitha
4 Vijaya
Name: fname, dtype: object

இங்கு 1 மற்றும் 4 ஆகிய index எண்ணைக் கொண்ட தரவுகள் மட்டும் எடுக்கப்பட்டுள்ளன.
print (df.loc[ [1,4] , ‘fname’ ])
1 Nandhini
4 Vijaya
Name: fname, dtype: object

இங்கு age எனும் column-ல் இருந்து அனைத்து row-ம் எடுக்கப்பட்டுள்ளன. ஆனால் relational operator மூலம் ஒப்பிட்டு 30 வயதுக்கு மேல் மதிப்பு கொண்டதை True எனவும், குறைவாக உள்ளதை False எனவும் வெளிப்படுத்தியுள்ளது.
print (df.loc[ : , ‘age’]>30 )
0 True
1 False
2 True
3 True
4 True
5 False
6 False
7 True
8 True
9 True
Name: age, dtype: bool

loc மற்றும் iloc ஆகிய இரண்டின் பண்புகளையும் ஒருங்கே பெற்றது ix ஆகும். இதுவும் loc பண்பு செய்யும் அதே வேலையைத்தான் செய்கிறது. இவை பின்வருமாறு.
print (df.ix[1:4, ‘fname’ ])
1 Nandhini
2 Madhuri
3 Kavitha
4 Vijaya
Name: fname, dtype: object

print (df.ix[[1,4], ‘fname’ ])
1 Nandhini
4 Vijaya
Name: fname, dtype: object

print (df.ix[ : , ‘age’]>30 )
0 True
1 False
2 True
3 True
4 True
5 False
6 False
7 True
8 True
9 True
Name: age, dtype: bool

iloc என்பதில் labels போன்று எதையும் கொடுத்து பிரித்தெடுக்க முடியாது. label- க்கான பெயர்கள் கொடுக்க வேண்டிய இடத்திலும் அதற்கான index மதிப்புகளையே கொடுக்க வேண்டும். இவை பின்வருமாறு.

இங்கு column-க்கான பெயர்கள் கொடுக்க வேண்டிய இடத்தில் 1:4 எனும் range கொடுக்கப்பட்டுள்ளதை கவனிக்கவும். upper லிமிட் 4-ஐ விடுத்து அதற்கு முந்தைய எண் கொண்ட column வரை கணக்கில் எடுத்துக்கொண்டது.

print (df.iloc[1:4,1:4])
  fname    lname     age
1 Nandhini Babu      28
2 Madhuri  Nathan    51
3 Kavitha  Manoharan 45

இங்கு 1,4 ஆகிய column-ல் இருக்கும் தரவுகள் மட்டும் கொடுக்கப்பட்ட row index-க்கு ஏற்ப எடுத்துக் காட்டப்பட்டுள்ளது.

print (df.iloc[[1,4],[1,4]])
  fname    desig
1 Nandhini Assistant Manager
4 Vijaya   AVP

அதே செயல் lambda function மூலம் செய்யப்பட்டுள்ளது.

print (df.iloc[[1,4],lambda x : [1,4]])
  fname    desig
1 Nandhini Assistant Manager
4 Vijaya   AVP

ஒரு டேட்டாஃப்பிரேமில் 700 rows மற்றும் 250 columns இருக்கிறதெனில், அதனை பிரிண்ட் செய்யும்போது அவை அனைத்தையும் திரையில் வெளிப்படுத்தாது. அதிகபட்சம் இவ்வளவு rows மற்றும் columns –ஐத்தான் வெளிப்படுத்த வேண்டும் என்பதற்கு வரையறை உண்டு. அதனைத் தெரிந்து கொள்ள get_option என்பது பயன்படும்.இங்கு அதிகபட்சம் 60 rows வரை வெளிப்படலாம் என்று வெளிப்படுத்தியுள்ளது.

print (pd.get_option(“display.max_rows”)) # max_columns
60

இம்மதிப்பினை மாற்றி அமைக்க set_option() என்பது பயன்படும். இதன் மூலம் அதிகபட்சம் 5 rows மற்றும் 4 columns வெளிப்படுமாறு செய்துள்ளோம்.ஆகவேதான் டேட்டாஃப்பிரேமை பிரிண்ட் செய்யும்போது, கொடுக்கப்பட்டுள்ள எண்ணிக்கைக்கு ஏற்றவாறு தரவுகளை வெளிப்படுத்தி விட்டு இடையில் இருப்பவற்றை … எனக் காட்டி உள்ளது .

pd.set_option(“display.max_rows”,5) # reset_option()
pd.set_option(“display.max_columns”,4) # reset_option()
print (df)
   id fname    … no         place
0  1  Nithya   … 9587412536 Hyderabad
1  2  Nandhini … 9848022338 Delhi
.. .. …      … …         …
8  9  Gayathri … 9848022333 Chennai
9  10 Kavitha  … 9848022336 Noida
[10 rows x 7 columns]

reset_option என்பது மீண்டும் அதன் default மதிப்பினைப் பெற உதவும்.
pd.reset_option(“display.max_rows”)
pd.reset_option(“display.max_columns”)

இது பற்றிய கூடுதல் விவரங்களைப் பெற describe_option பயன்படும்.
print (pd.describe_option(“display.max_rows”))
display.max_rows : int
If max_rows is exceeded, switch to truncate view. Depending on
`large_repr`, objects are either centrally truncated or printed as
a summary view. ‘None’ value means unlimited.
In case python/IPython is running in a terminal and `large_repr`
equals ‘truncate’ this can be set to 0 and pandas will auto-detect
the height of the terminal and print a truncated object which fits
the screen height. The IPython notebook, IPython qtconsole, or
IDLE do not run in a terminal and hence it is not possible to do
correct auto-detection.
[default: 60] [currently: 60]
None

ஏதேனும் ஒருமுறை மட்டும் திரையில் வெளிப்படும் rows,columns எண்ணிக்கையை கட்டுப்படுத்த விரும்பினால், with statement-ஐத் தொடர்ந்து option_context என்பதற்குள் எவ்வளவு என்பதைக் கொடுத்து பிரிண்ட் செய்ய வேண்டும்.

with pd.option_context(“display.max_rows”,5):
print (df)
   id fname    lname     age  desig      no         place
0  1  Nithya   Duraisamy 31   Manager    9587412536 Hyderabad
1  2  Nandhini Babu      28   AstManager 9848022338 Delhi
.. .. …      …       …  …        …        …
8  9  Gayathri Ragu      36   Engineer   9848022333 Chennai
9  10 Kavitha  Manoharan 49   AVP        9848022336 Noida
[10 rows x 7 columns]

%d bloggers like this: