Wednesday, 4 August 2021

Extracting & Slicing Subseries created from a dictionary

 CASE 1 - When the index address has been redefined with non-numeric values.

#Slicing subseries from a series which has been reindexed with non-numeric values
import pandas

scalarvalue=[100, 200, 300, 400, 100]
print("The Scalar Value List is       = ", scalarvalue)
S1=pandas.Series(scalarvalue, index=pandas.Index(['A','B','C','D','E']))
S1['A': ]

A    100
B    200
C    300
D    400
E    100
dtype: int64

S1['A':'D'] -- 
A    100
B    200
C    300
D    400
dtype: int64

S1['A':'H'] --
A    100
B    200
C    300
D    400
E    100
dtype: int64

S1['J':] -- Series([], dtype: int64)

S1['5':] -- 
A    100
B    200
C    300
D    400
E    100
dtype: int64

S1[ :'A'] --  A    100
              dtype: int64

S1[:'C'] --
A    100
B    200
C    300
dtype: int64

S1[:'H'] --
A    100
B    200
C    300
D    400
E    100
dtype: int64

S1[:'a'] --
A    100
B    200
C    300
D    400
E    100
dtype: int64

S1[:'p'] --
A    100
B    200
C    300
D    400
E    100
dtype: int64

S1[:'6'] --
Series([], dtype: int64)

S1[:] --
A    100
B    200
C    300
D    400
E    100
dtype: int64

SLICING THROUGH  POSITIONAL POSITIVE INDEX 

# Slicing subseries from a series which has been reindexed with repetitive non-numeric values through positional positive index

import pandas
scalarvalue=[100, 200, 300, 400, 100]
print("The Scalar Value List is       = ", scalarvalue)
S1=pandas.Series(scalarvalue, index=pandas.Index(['A','B','C','D','E']))
S1[0:]

A    100
B    200
C    300
D    400
E    100
dtype: int64

S1[0:3] -- 
A    100
B    200
C    300
dtype: int64


S1[0:8] --
A    100
B    200
C    300
D    400
E    100
dtype: int64

S1[6:10] -- Series([], dtype: int64)

S1[0:-2] --
A    100
B    200
C    300
dtype: int64


S1[0:-4] -- 
A    100
dtype: int64


S1[0:-6] --
Series([], dtype: int64)


SLICING THROUGH  POSITIONAL NEGATIVE  INDEX 

# Slicing subseries from a series which has been reindexed with non-numeric values through positional negative index


import pandas

scalarvalue=[100, 200, 300, 400, 100]
print("The Scalar Value List is       = ", scalarvalue)
S1=pandas.Series(scalarvalue, index=pandas.Index(['A','B','C','D','E']))
S1[-1:]


E    100
dtype: int64


S1[-2:] -- 
D    400
E    100
dtype: int64

S1[-5:] --
A    100
B    200
C    300
D    400
E    100
dtype: int64 

S1[:-2]  -- 
A    100
B    200
C    300
dtype: int64

S1[:-6] -- 
Series([], dtype: int64)

S1[-1:-6] --
Series([], dtype: int64)

S1[-6:-3] --
A    100
B    200
dtype: int64

S1[-6:-4] --
A    100
dtype: int64

S1[-6:-6] --
Series([], dtype: int64)


# Slicing subseries from a series which has been reindexed with repetitive non-numeric values through positional negative index

import pandas

scalarvalue=[100, 200, 300, 400, 100]
print("The Scalar Value List is       = ", scalarvalue)
S1=pandas.Series(scalarvalue, index=pandas.Index(['E','D','A','D','E']))
print(S1)
E    100
D    200
A    300
D    400
E    100
dtype: int64

S1['A':]  -- 
A    300
D    400
E    100
dtype: int64

S1['A':'E']  --  
KeyError: "Cannot get right slice bound for non-unique label: 'E'"

S1['E':'A']
KeyError: "Cannot get left slice bound for non-unique label: 'E'"

S1['E':'D'] --
KeyError: "Cannot get left slice bound for non-unique label: 'E'"

S1['D':'E'] --
KeyError: "Cannot get left slice bound for non-unique label: 'D'"


CASE 2 - When the index address has been redefined with a  new list of numeric values.

#Slicing subseries through new numeric index address from a series which has been reindexed with new numeric values

import pandas

scalarvalue=[100, 200, 300, 400, 100]

print("The Scalar Value List is       = ", scalarvalue)

S1=pandas.Series(scalarvalue, index=pandas.Index([10,20,30,40,50]))

S1

10    100
20    200
30    300
40    400
50    100
dtype: int64


S1[20: ] - Series([], dtype: int64)

S1[ :40] --

10    100
20    200
30    300
40    400
50    100
dtype: int64

** This shows an output because 40 is considered as the last specified positional positive index address and not as the labelled index address.

S1[40:10] -- Series([], dtype: int64)


S1[0:4] -- 
10    100
20    200
30    300
40    400
dtype: int64

S1[2:4] --

30    300
40    400
dtype: int64


Extracting an Element from a Series created from a dictionary.


Default Case (Extraction through the labelled index address which are the keys)


Consider the Series - MySeries1

import pandas as pd


nd={ 'd1' : { 'Stud1' : 100, ' Stud2 ' : 95}, 


          'd2' : { 'Stud3' : 95,  ' Stud4 ' : 98} 

        }


MySeries1= pd.Series(nd)    

MySeries1



d1    {'Stud1': 100, ' Stud2 ': 95}
d2     {'Stud3': 95, ' Stud4 ': 98}
dtype: object


MySeries1['d1'] --
{'Stud1': 100, ' Stud2 ': 95}

MySeries1['d2'] --
{'Stud3': 95, ' Stud4 ': 98}



Case 1 (Extraction through the positional positive index address)

MySeries1[0] --  {'Stud1': 100, ' Stud2 ': 95}

MySeries1[2] -- IndexError: index 2 is out of bounds for axis 0 with size 2


Case 2 (Extraction through the positional negative index address)

MySeries1[-1] -- {'Stud3': 95, ' Stud4 ': 98}

MySeries1[-2] -- {'Stud1': 100, ' Stud2 ': 95}

MySeries1[-4] -- IndexError: index -4 is out of bounds for axis 0 with size 2



Slicing a subseries from a Series created from a dictionary


Default Case (through default index - keys)


MySeries1['d1':] -- 
d1    {'Stud1': 100, ' Stud2 ': 95}
d2     {'Stud3': 95, ' Stud4 ': 98}
dtype: object


MySeries1['d3': ] --
Series([], dtype: object)


MySeries1[ :'d1'] --
d1    {'Stud1': 100, ' Stud2 ': 95}
dtype: object


MySeries1[ :'d2'] --
d1    {'Stud1': 100, ' Stud2 ': 95}
d2    {'Stud3': 95, ' Stud4 ': 98}


Case 1 (Slicing through the positional positive index address)

MySeries1[0:2] -- 
d1    {'Stud1': 100, ' Stud2 ': 95}
d2     {'Stud3': 95, ' Stud4 ': 98}
dtype: object


MySeries1[1:2] --
d2    {'Stud3': 95, ' Stud4 ': 98}
dtype: object


MySeries1[2:4] --
Series([], dtype: object) 


Case 2 (Slicing through the positional negative index address)

MySeries1[-1:] --
d2    {'Stud3': 95, ' Stud4 ': 98}
dtype: object

MySeries1[-2:] --
d1    {'Stud1': 100, ' Stud2 ': 95}
d2     {'Stud3': 95, ' Stud4 ': 98}
dtype: object


MySeries1[-1:-2] -- 
Series([], dtype: object)


MySeries1[-2:-1] --
d1    {'Stud1': 100, ' Stud2 ': 95}
dtype: object


MySeries1[-3:-2] --
Series([], dtype: object) 


********************************************************************************
 

No comments:

Post a Comment