1. Predict the output of following code fragments one by one. For every next code fragment, consider that the changes by previous code fragment are in place. That is, for code fragment (b), changes made by code fragment (a) are persisting ; for (c), changes by (a) and (b ) are persisting and so on.

(a)
import pandas as pd
columns =[‘2015’, ‘2016’, ‘2017’, ‘2018’]
index=[‘Messi’,’Ronaldo’,’Neymar’,’Hazard’ ]
df = pd.DataFrame(columns=columns, index=index)
print(df) # No values inserted, so all of them are nan
df.to_csv(“c:\one.csv”)
# Output
2015 2016 2017 2018
Messi NaN NaN NaN NaN
Ronaldo NaN NaN NaN NaN
Neymar NaN NaN NaN NaN
Hazard NaN NaN NaN NaN

(b)
df[‘2015’][‘Messi’] = 12
df[‘2016’][‘Ronaldo’] = 11
df[‘2017’][‘Neymar’] = 8
df[‘2018’][‘Hazard’] = 16
print(df)
df .to_csv(“c:\two.csv”, sep = ‘@’)
# output
2015 2016 2017 2018
Messi 12 NaN NaN NaN
Ronaldo NaN 11 NaN NaN
Neymar NaN NaN 8 NaN
Hazard NaN NaN NaN 16

(c)
new_df = pd.read_csv(‘c:\one.csv’, index_col=0)
print(new_df)
# output
2015 2016 2017 2018
Messi NaN NaN NaN NaN
Ronaldo NaN NaN NaN NaN
Neymar NaN NaN NaN NaN
Hazard NaN NaN NaN NaN

(d)
new_df = pd.read_csv(‘c:\one.csv’) # the original index column becomes a normal column here
print(new_df)
# output
Unnamed: 0 2015 2016 2017 2018
0 Messi NaN NaN NaN NaN
1 Ronaldo NaN NaN NaN NaN
2 Neymar NaN NaN NaN NaN
3 Hazard NaN NaN NaN NaN

(e)
new_df = pd.read_csv(‘c:\two.csv’)
print(new_df) # the output is being separated by ‘,’
# output
@2015@2016@2017@2018
0 Messi@12@@@
1 Ronaldo@@11@@
2 Neymar@@@8@
3 Hazard@@@@16

(f)
new_df = pd.read_csv(‘c:\two.csv’, sep = ‘@’)
print(new_df) # the output is being separated by ‘@’
# output
Unnamed: 0 2015 2016 2017 2018
0 Messi 12.0 NaN NaN NaN
1 Ronaldo NaN 11.0 NaN NaN
2 Neymar NaN NaN 8.0 NaN
3 Hazard NaN NaN NaN 16.0