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

DataFrame creation – Multiple ways

 

ஒரு டேட்டாஃப்பிரேமை பல்வேறு வழிகளில் உருவாக்கலாம். அறிமுகத்தின் போது ஒரு லிஸ்ட் உள்ளே பல லிஸ்டை கொடுத்து உருவாக்கினோம் அல்லவா! அதேபோல இன்னும் என்னென்ன வழிகளில் எல்லாம் உருவாக்கலாம் என்பதை இப்பகுதியில் காணலாம்.

அவை பின்வருமாறு.


import pandas as pd
d = {'Tamil' : 90, 'English' : 83, 'Maths' : 67, 'Science' : 83, 'Social' : 45}
s = pd.Series(d)
print (s)
l = [{'Tamil' : 90, 'English' : 83, 'Maths' : 67, 'Science' : 83, 'Social' : 45},
{'Tamil' : 68, 'English' : 89, 'Maths' : 75, 'Science' : 56, 'Social' : 73},
{'Tamil' : 58, 'English' : 88, 'Maths' : 60, 'Science' : 90, 'Social' : 100}]
df = pd.DataFrame(l)
print (df)
df = df[['Tamil','English','Maths','Science','Social']]
print (df)
d = {'Tamil' : [90,68,58], 'English' : [83,89,88], 'Maths' : [67,75,60], 'Science' : [83,56,90], 'Social' : [45,73,100]}
df = pd.DataFrame(d)
print (df)
d = {'Tamil' : pd.Series([90,68,58]), 'English' : pd.Series([83,89,88]), 'Maths' : pd.Series([67,75,60]),
'Science' : pd.Series([83,56,90]), 'Social' : pd.Series([45,73,100])}
df = pd.DataFrame(d)
print (df)
df['Environmental Science']=pd.Series([90,92,98])
print (df)
df = pd.DataFrame(d,columns=['Tamil','English','Social'])
print (df)

நிரலுக்கான விளக்கம்:

From list of dicts

முதலில் ஒரு டிக்சனரி மூலம் சீரீஸை உருவாக்குவது எப்படி என்பதைத் தெரிந்து கொள்வோம். அப்போதுதான் இதே போல பல சீரீஸை கொடுத்து ஒரு டேட்டாஃப்பிரேமை உருவாக்க முடியும். ஏனெனில் டேட்டாஃப்பிரேம் என்பது பல்வேறு சீரீஸ்களின் தொகுப்பு ஆகும்.

இது பின்வருமாறு.

d = {‘Tamil’ : 90, ‘English’ : 83, ‘Maths’ : 67, ‘Science’ : 83, ‘Social’ : 45}
s = pd.Series(d)
print (s)

Tamil   90
English 83
Maths   67
Science 83
Social  45
dtype: int64
மேற்கூறியவாறே பல டிக்சனரிகளை ஒரு லிஸ்டுக்குள் கொடுத்து டேட்டாஃப்பிரேம் உருவாக்கிக் காட்டப்பட்டுள்ளது.

l = [{‘Tamil’ : 90, ‘English’ : 83, ‘Maths’ : 67, ‘Science’ : 83, ‘Social’ : 45},
{‘Tamil’ : 68, ‘English’ : 89, ‘Maths’ : 75, ‘Science’ : 56, ‘Social’ : 73},
{‘Tamil’ : 58, ‘English’ : 88, ‘Maths’ : 60, ‘Science’ : 90, ‘Social’ : 100}]
df = pd.DataFrame(l)
print (df)

  English Maths Science Social Tamil
0 83      67    83      45     90
1 89      75    56      73     68
2 88      60    90      100    58
ஒரு லிஸ்டுக்குள் இருக்கும் டிக்சனரியின் கீஸ் column-ஆக மாறும்போது அது ஆல்பபெட் முறையில் columns-ஐ அமைக்கும். அதனை நாம் விரும்புகின்ற வரிசையில் அமைக்க விரும்பினால் பின்வருமாறு கொடுக்க வேண்டும்.

df = df[[‘Tamil’,’English’,’Maths’,’Science’,’Social’]]
print (df)

  Tamil English Maths Science Social
0 90    83      67    83      45
1 68    89      75    56      73
2 58    88      60    90      100

From dict of lists

மேற்கூறியவாறு அல்லாமல் நேரடியாக டிக்சனரியின் key-ஆக columns-ஐயும், அதன் மதிப்புகளை ஒரு லிஸ்ட் ஆகவும் கொடுத்து டேட்டாஃப்பிரேமை உருவாக்கினால், column வரிசையை மாற்ற வேண்டிய அவசியம் இருக்காது. ஏனெனில் நாம் கொடுக்கின்ற வரிசையிலே column அமைக்கப்படும். இது பின்வருமாறு.

d = {‘Tamil’ : [90,68,58], ‘English’ : [83,89,88], ‘Maths’ : [67,75,60], ‘Science’ : [83,56,90], ‘Social’ : [45,73,100]}
df = pd.DataFrame(d)
print (df)

  Tamil English Maths Science Social
0 90    83      67    83      45
1 68    89      75    56      73
2 58    88      60    90      100

From dict of series

அதேபோல ஒரு டிக்சனரியின் கீ மதிப்புகளை லிஸ்ட் ஆக அல்லாமல் சீரீஸ் ஆக கொடுத்தும் டேட்டாஃப்பிரேமை உருவாக்கலாம். இது பின்வருமாறு.

d = {‘Tamil’ : pd.Series([90,68,58]), ‘English’ : pd.Series([83,89,88]), ‘Maths’ : pd.Series([67,75,60]),’Science’ : pd.Series([83,56,90]), ‘Social’ : pd.Series([45,73,100])}
df = pd.DataFrame(d)
print (df)

  Tamil English Maths Science Social
0 90    83      67    83      45
1 68    89      75    56      73
2 58    88      60    90      100
புதிதாக ஒரு column-ஐ இணைக்க விரும்பினால் அது பின்வருமாறு அமையும்.

df[‘Environmental Science’]=pd.Series([90,92,98])
print (df)

  Tamil English Maths Science Social Environmental Science
0 90    83      67    83      45     90
1 68    89      75    56      73     92
2 58    88      60    90      100    98
ஒரு டிக்சனரியிலிருந்து நமக்கு வேண்டிய column-ஐ மட்டும் எடுத்து டேட்டாஃப்பிரேமை உருவாக்க விரும்பினால் அது பின்வருமாறு அமையும்.

df = pd.DataFrame(d,columns=[‘Tamil’,’English’,’Social’])
print (df)

  Tamil English Social
0 90    83      45
1 68    89      73
2 58    88      100

From csv file

ஒரு சி.எஸ்.வி கோப்பில் இருக்கும் தரவுகளை வைத்து டேட்டாஃப்பிரேமை உருவாக்குவதில் பலவிதங்கள் உள்ளன. அவை பின்வருமாறு.


import pandas as pd
import numpy as np
df = pd.read_csv("./girls.csv")
print (df)
df = pd.read_csv("./girls.csv",index_col=['id'])
print (df)
df = pd.read_csv("./girls.csv",names=['a', 'b', 'c','d','e','f','g'])
print (df)
df=pd.read_csv("./girls.csv",header=4)
print (df)
df=pd.read_csv("./girls.csv",skiprows=5,dtype={'40': np.float64})
print (df)
df.to_csv('aaa.csv')

 

pd.read_csv() எனும் function கொடுக்கப்பட்டுள்ள கோப்பில் இருக்கும் தரவுகளை எடுத்து டேட்டாஃப்பிரேமை உருவாக்கும். அவ்வாறு உருவாகும் போது அதிலுள்ள ஒவ்வொரு row-ம் ஜீரோ முதல் தொடர்ச்சியாக அமைந்த index எண்களால் குறிக்கப்படும். மேலும் முதலாவது row தலைப்பு column ஆக எடுத்துக்கொள்ளப்படும்.

df = pd.read_csv(“./girls.csv”)
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
2 3  Madhuri  Nathan    51  VP         9848022339 Delhi
3 4  Kavitha  Manoharan 45  AVP        9848022330 Hyderabad
4 5  Vijaya   Kandasamy 40  AVP        9848022336 Noida
5 6  Aarthi   Raj       22  AstManager 9848022335 Chennai
6 7  Lavanya  Sankar    23  SrEngineer 9848022334 Chennai
7 8  Meena    Baskar    56  VP         9848022333 Hyderabad
8 9  Gayathri Ragu      36  Engineer   9848022333 Chennai
9 10 Kavitha  Manoharan 49  AVP        9848022336 Noida

கோப்பில் உள்ள ஏதேனும் ஒரு column-ஐ இன்டெக்ஸ் எண்ணாக அமைக்க விரும்பினால் index_col எனும் பண்பு பயன்படும்.

df = pd.read_csv(“./girls.csv”,index_col=[‘id’])
print (df)

id fname    lname     age desig      no         place
1  Nithya   Duraisamy 31  Manager    9587412536 Hyderabad
2  Nandhini Babu      28  AstManager 9848022338 Delhi
3  Madhuri  Nathan    51  VP         9848022339 Delhi
4  Kavitha  Manoharan 45  AVP        9848022330 Hyderabad
5  Vijaya   Kandasamy 40  AVP        9848022336 Noida
6  Aarthi   Raj       22  AstManager 9848022335 Chennai
7  Lavanya  Sankar    23  SrEngineer 9848022334 Chennai
8  Meena    Baskar    56  VP         9848022333 Hyderabad
9  Gayathri Ragu      36  Engineer   9848022333 Chennai
10 Kavitha  Manoharan 49  AVP        9848022336 Noida

default-ஆக அமையும் முதல் row-வை தலைப்பாக அமைக்காமல், நாம் விரும்பும் பட்டியலைக் கொடுத்து names எனும் பண்பின் மூலம் அதனை தலைப்பாக அமைக்குமாறு செய்யலாம்.

df = pd.read_csv(“./girls.csv”,names=[‘a’, ‘b’, ‘c’,’d’,’e’,’f’,’g’])
print (df)

   a    b        c         d   e          f          g 
0  id   fname    lname     age desig      no         place
1  001  Nithya   Duraisamy 31  Manager    9587412536 Hyderabad
2  002  Nandhini Babu      28  AstManager 9848022338 Delhi
3  003  Madhuri  Nathan    51  VP         9848022339 Delhi
4  004  Kavitha  Manoharan 45  AVP        9848022330 Hyderabad
5  005  Vijaya   Kandasamy 40  AVP        9848022336 Noida
6  006  Aarthi   Raj       22  AstManager 9848022335 Chennai
7  007  Lavanya  Sankar    23  SrEngineer 9848022334 Chennai
8  008  Meena    Baskar    56  VP         9848022333 Hyderabad
9  009  Gayathri Ragu      36  Engineer   9848022333 Chennai
10 010  Kavitha  Manoharan 49  AVP        9848022336 Noida

default-ஆக அமையும் முதல் row-வை விடுத்து, குறிப்பாக ஏதோ ஒரு row-வை தலைப்பு column-ஆக அமைக்க விரும்பினால் header எனும் பண்பு பயன்படும். இவ்வாறு அமைக்கும் போது இந்த row-க்கு அடுத்தடுத்து வரும் rows மட்டுமே டேட்டாஃப்பிரேமின் மதிப்புகளாக அமையும்.

df=pd.read_csv(“./girls.csv”,header=4)
print (df)

   004  Kavitha  Manoharan 45  AVP        9848022330 Hyderabad
0  5    Vijaya   Kandasamy 40  AVP        9848022336 Noida
1  6    Aarthi   Raj       22  AstManager 9848022335 Chennai
2  7    Lavanya  Sankar    23  SrEngineer 9848022334 Chennai
3  8    Meena    Baskar    56  VP         9848022333 Hyderabad
4  9    Gayathri Ragu      36  Engineer   9848022333 Chennai
5  10   Kavitha  Manoharan 49  AVP        9848022336 Noida

அதேபோல skiprows எனும் பண்பும் கொடுக்கப்பட்டுள்ள எண்ணிக்கைக்கு ஏற்ப ஆரம்பத்தில் இருக்கும் rows-ஐ தவிர்த்து டேட்டாஃப்பிரேமை உருவாக்கும். dtype எனும் பண்பு குறிப்பிடப்பட்டுள்ள column இன் தரவு வகையை மாற்றப் பயன்படும்.

df=pd.read_csv(“./girls.csv”,skiprows=5,dtype={’40’: np.float64})
print (df)

   005  Vijaya   Kandasamy 40    AVP        9848022336 Noida
0  6    Aarthi   Raj       22.0  AstManager 9848022335 Chennai
1  7    Lavanya  Sankar    23.0  SrEngineer 9848022334 Chennai
2  8    Meena    Baskar    56.0  VP         9848022333 Hyderabad
3  9    Gayathri Ragu      36.0  Engineer   9848022333 Chennai
4  10   Kavitha  Manoharan 49.0  AVP        9848022336 Noida

%d bloggers like this: