Practise DataFrame arithmetic, labels, aggregation, alignment, Boolean checks, concatenation and function application with current Pandas.
Show Table of Contents ↓import pandas as pd
my_dict=([-1,-1,2,-3])
my_data = pd.DataFrame(data=my_dict)
print(my_data.abs())
import pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[-30,40,-50],
'ENGLISH':[20,-30,40]}
my_data = pd.DataFrame(data=my_dict)
#print(my_data['MATH'].abs())
print(abs(my_data['MATH'])) # MATH column
import pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[-30,40,-50],
'ENGLISH':[20,-30,40]}
my_data = pd.DataFrame(data=my_dict)
print(abs(my_data[['MATH','ENGLISH']]))Expected output
0
0 1
1 1
2 2
3 3
0 30
1 40
2 50
Name: MATH, dtype: int64
MATH ENGLISH
0 30 20
1 40 30
2 50 40import pandas as pd
my_dict=([-1,-1,2,-3])
my_data = pd.DataFrame(data=my_dict)
print(my_data.add(2))
import pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[-30,40,-50],
'ENGLISH':[20,-30,40]}
my_data = pd.DataFrame(data=my_dict)
#print(my_data[['MATH']].add(2)) # applying to single column
print(my_data[['MATH','ENGLISH']].add(2)) # applying to two columnsExpected output
0
0 1
1 1
2 4
3 -1
MATH ENGLISH
0 -28 22
1 42 -28
2 -48 42import pandas as pd
my_dict=([1,2,3,4])
my_data = pd.Series(data=my_dict)
print(my_data.add_prefix('row_no_'))
import pandas as pd
my_dict=([1,2,3,4])
my_data = pd.DataFrame(data=my_dict)
print(my_data.add_prefix('col_no_'))
import pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[-30,40,-50],
'ENGLISH':[20,-30,40]}
my_data = pd.DataFrame(data=my_dict)
my_label=pd.DataFrame()
print(my_data[['NAME']].add_prefix('f_name '))Expected output
row_no_0 1
row_no_1 2
row_no_2 3
row_no_3 4
dtype: int64
col_no_0
0 1
1 2
2 3
3 4
f_name NAME
0 Ravi
1 Raju
2 Aleximport pandas as pd
my_dict=([1,2,3,4])
my_data = pd.Series(data=my_dict)
print(my_data.add_suffix('_no_'))
import pandas as pd
my_dict=([1,2,3,4])
my_data = pd.DataFrame(data=my_dict)
print(my_data.add_suffix(' col_no_'))
import pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[-30,40,-50],
'ENGLISH':[20,-30,40]}
my_data = pd.DataFrame(data=my_dict)
my_label=pd.DataFrame()
print(my_data[['NAME']].add_suffix(' (f_name)'))Expected output
0_no_ 1
1_no_ 2
2_no_ 3
3_no_ 4
dtype: int64
0 col_no_
0 1
1 2
2 3
3 4
NAME (f_name)
0 Ravi
1 Raju
2 Aleximport pandas as pd
my_dict=([1,2,3,4])
my_data = pd.DataFrame(data=my_dict)
print(my_data.agg(['sum']))
import pandas as pd
my_dict=([1,2,3,4])
my_data = pd.DataFrame(data=my_dict)
print(my_data.agg(['sum','min','max','mean']))
import pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[30,40,50],
'ENGLISH':[20,30,40]}
my_data = pd.DataFrame(data=my_dict)
print(my_data.select_dtypes(include='number').agg(['sum','min','max','mean'])) # numeric columns
print(my_data['MATH'].agg(['sum','min','max','mean'])) # on one columns
print(my_data[['MATH','ENGLISH']].agg(['sum','min','max','mean'])) # two columns
sales = pd.DataFrame({"product": ["Pen", "Pen", "Book"], "store": ["A", "A", "B"],
"qty": [2, 3, 1], "price": [10.0, 12.0, 25.0]})
my_sale=sales.groupby(['product','store'],as_index=False).agg({'qty':'sum','price':'mean'})
print(my_sale)
assert my_sale.loc[my_sale["product"].eq("Pen"), "qty"].iloc[0] == 5Expected output
0
sum 10
0
sum 10.0
min 1.0
max 4.0
mean 2.5
ID MATH ENGLISH
sum 6.0 120.0 90.0
min 1.0 30.0 20.0
max 3.0 50.0 40.0
mean 2.0 40.0 30.0
sum 120.0
min 30.0
max 50.0
mean 40.0
Name: MATH, dtype: float64
MATH ENGLISH
sum 120.0 90.0
min 30.0 20.0
max 50.0 40.0
mean 40.0 30.0
product store qty price
0 Book B 1 25.0
1 Pen A 5 11.0import pandas as pd
my_dict1={'NAME':['Ravi','Alex'],
'MATH':[30,40]}
my_dict2={'NAME':['Ravi','Raju','Rone'],
'ENGLISH':[20,50,60]}
my_data1 = pd.DataFrame(data=my_dict1)
my_data2 = pd.DataFrame(data=my_dict2)
a1, a2 = my_data1.align(my_data2, join='outer', axis=1)
print(a1)
print(a2)
import pandas as pd
my_dict1={'NAME':['Ravi','Alex'],
'ID':[1,2],
'MATH':[30,40]}
my_dict2={'NAME':['Ravi','Raju','Rone'],
'ID':[1,3,4],
'ENGLISH':[20,50,60]}
my_data1 = pd.DataFrame(data=my_dict1)
my_data2 = pd.DataFrame(data=my_dict2)
a1, a2 = my_data1.align(my_data2, join='left', axis=1)
print(a1)
print(a2)Expected output
ENGLISH MATH NAME
0 NaN 30 Ravi
1 NaN 40 Alex
ENGLISH MATH NAME
0 20 NaN Ravi
1 50 NaN Raju
2 60 NaN Rone
NAME ID MATH
0 Ravi 1 30
1 Alex 2 40
NAME ID MATH
0 Ravi 1 NaN
1 Raju 3 NaN
2 Rone 4 NaNimport pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[-30,False,-50],
'ENGLISH':[20,-30,40]}
my_data = pd.DataFrame(data=my_dict)
print(my_data.map(bool).all())
import pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[-30,False,-50],
'ENGLISH':[20,-30,40]}
my_data = pd.DataFrame(data=my_dict)
print(my_data.map(bool).all(axis=1))
import pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[-30,40,-50],
'ENGLISH':[20,'',40]}
my_data = pd.DataFrame(data=my_dict)
print(my_data.map(bool).all(axis=1))
import pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[0,40,-50],
'ENGLISH':[20,30,40]}
my_data = pd.DataFrame(data=my_dict)
print(my_data.map(bool).all(axis=1))Expected output
NAME True
ID True
MATH False
ENGLISH True
dtype: bool
0 True
1 False
2 True
dtype: bool
0 True
1 False
2 True
dtype: bool
0 False
1 True
2 True
dtype: boolimport pandas as pd
my_dict={'NAME':['']}
my_data = pd.DataFrame(data=my_dict)
print(my_data.map(bool).any())
import pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex','']}
my_data = pd.DataFrame(data=my_dict)
print(my_data.map(bool).any())
import pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[0,0,0],
'ENGLISH':[20,-30,40]}
my_data = pd.DataFrame(data=my_dict)
print(my_data.map(bool).any())
import pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[0,0,0],
'ENGLISH':[20,-30,40]}
my_data = pd.DataFrame(data=my_dict)
print(my_data.map(bool).any(axis=1))
import pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[0,0,0],
'ENGLISH':[20,-30,40]}
my_data = pd.DataFrame(data=my_dict)
print(my_data.map(bool).any(axis=0))Expected output
NAME False
dtype: bool
NAME True
dtype: bool
NAME True
ID True
MATH False
ENGLISH True
dtype: bool
0 True
1 True
2 True
dtype: bool
NAME True
ID True
MATH False
ENGLISH True
dtype: boolimport pandas as pd
my_dict1={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[10,20,30],
'ENGLISH':[20,30,40]}
my_dict2={'NAME':['Ravi2','Raju2','Alex2'],
'ID':[1,2,3],'MATH':[0,0,0],
'ENGLISH':[40,50,60]}
my_data1 = pd.DataFrame(data=my_dict1)
my_data2 = pd.DataFrame(data=my_dict2)
my_data1 = pd.concat([my_data1, my_data2], sort=True)
print(my_data1)
my_data1 = pd.concat([my_data1.iloc[:3], my_data2], sort=True, ignore_index=True)
import pandas as pd
my_dict1={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[0,0,0],
'ENGLISH':[20,-30,40]}
my_dict2={'SCIENCE':[7,8,9]}
my_data1 = pd.DataFrame(data=my_dict1)
my_data2 = pd.DataFrame(data=my_dict2)
my_data1 = pd.concat([my_data1, my_data2], sort=True)
print(my_data1)
import pandas as pd
my_dict1={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[10,20,30],
'ENGLISH':[20,30,40]}
my_dict2={'NAME':['Ravi2','Raju2','Alex2'],
'ID':[1,2,3],'MATH':[0,0,0],
'ENGLISH':[40,50,60]}
my_data1 = pd.DataFrame(data=my_dict1)
my_data2 = pd.DataFrame(data=my_dict2)
#my_data1 = pd.concat([my_data1, my_data2], sort=True)
my_data1= pd.concat([my_data1,my_data2])
print(my_data1)Expected output
ENGLISH ID MATH NAME
0 20 1 10 Ravi
1 30 2 20 Raju
2 40 3 30 Alex
0 40 1 0 Ravi2
1 50 2 0 Raju2
2 60 3 0 Alex2
ENGLISH ID MATH NAME SCIENCE
0 20.0 1.0 0.0 Ravi NaN
1 -30.0 2.0 0.0 Raju NaN
2 40.0 3.0 0.0 Alex NaN
0 NaN NaN NaN NaN 7.0
1 NaN NaN NaN NaN 8.0
2 NaN NaN NaN NaN 9.0
NAME ID MATH ENGLISH
0 Ravi 1 10 20
1 Raju 2 20 30
2 Alex 3 30 40
0 Ravi2 1 0 40
1 Raju2 2 0 50
2 Alex2 3 0 60import pandas as pd
my_dict={'ENGLISH':[20,-30,40]}
my_data = pd.DataFrame(data=my_dict)
print(my_data.apply(sum)) # 30
print(my_data.apply(max)) # 40
import pandas as pd
my_dict={'ENGLISH':[20,-30,40],'MATH':[40,50,70]}
my_data = pd.DataFrame(data=my_dict)
print(my_data.apply(sum,axis=0))
print(my_data.apply(sum,axis=1))
import pandas as pd
import numpy as my_np
my_dict={'NAME':['Ravi','Raju','Alex'],
'ID':[1,2,3],'MATH':[0,0,0],
'ENGLISH':[20,-30,40]}
my_data = pd.DataFrame(data=my_dict)
with my_np.errstate(invalid='ignore'):
roots = my_data['ENGLISH'].apply(my_np.sqrt)
print(roots)
assert roots.isna().sum() == 1Expected output
ENGLISH 30
dtype: int64
ENGLISH 40
dtype: int64
ENGLISH 30
MATH 160
dtype: int64
0 60
1 20
2 110
dtype: int64
0 4.472136
1 NaN
2 6.324555
Name: ENGLISH, dtype: float64import pandas as pd
my_dict={'ENGLISH':[20,-30,40]}
my_data = pd.DataFrame(data=my_dict)
print(my_data.map(lambda x:x+1))
import pandas as pd
my_dict={'ENGLISH':[20,-30,40],'MATH':[40,50,70]}
my_data = pd.DataFrame(data=my_dict)
print(my_data.map(lambda x:x+10))
import pandas as pd
my_dict={'ENGLISH':[20,-30,40],'MATH':[40,50,70]}
my_data = pd.DataFrame(data=my_dict)
print(my_data[['MATH']].map(lambda x:x+10))Expected output
ENGLISH
0 21
1 -29
2 41
ENGLISH MATH
0 30 50
1 -20 60
2 50 80
MATH
0 50
1 60
2 80left = pd.DataFrame({"mark": [10]}, index=[0])
right = pd.DataFrame({"mark": [20]}, index=[0])
try:
pd.concat([left, right], verify_integrity=True)
except ValueError:
print("Duplicate row labels rejected")
else:
raise AssertionError("Expected duplicate labels")Expected output
Duplicate row labels rejectedmarks = pd.DataFrame({"MATH": [30, 40, 50], "ENGLISH": [20, 30, 40]}, index=["Ravi", "Raju", "Alex"])
print(marks.sum(axis=1))
print(marks.mean(axis=0))
assert marks.sum(axis=1).tolist() == [50, 70, 90]
assert marks.mean(axis=0).tolist() == [40.0, 30.0]Expected output
Ravi 50
Raju 70
Alex 90
dtype: int64
MATH 40.0
ENGLISH 30.0
dtype: float64Open in Google Colab View on GitHub
Run examples in order, inspect method results and try the exercise. Save a copy to keep edits.
Reference: Pandas DataFrame Methods documentation.
Author & Instructor at plus2net
I write and maintain practical tutorials on Python, PHP, SQL, JavaScript, HTML, jQuery, and web development at plus2net. The tutorials focus on clear explanations, working examples, and code that readers can test and adapt while learning.