import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
'''The rename() method allows you to relabel an axis based on some mapping (a dict or Series) or an arbitrary function.'''
s=pd.Series(np.random.randn(5),index=list('abcde'))
print(s.rename(str.upper))
print('*'*44)
'''If you pass a function, it must return a value when called with any of the labels (and must produce a set of unique values).
A dict or Series can also be used:'''
df=pd.DataFrame({
'one':pd.Series(np.random.randn(3),index=list('abc')),
'two':pd.Series(np.random.randn(4),index=list('abcd')),
'three':pd.Series(np.random.randn(3),index=list('bcd'))
},columns=['one','two','three'])
print( df.rename(columns={'one': 'foo', 'two': 'bar'},
index={'a': 'apple', 'b': 'banana', 'd': 'durian'}))
print(df.rename({'one': 'foo', 'two': 'bar'}, axis='columns'))
print( df.rename({'a': 'apple', 'b': 'banana', 'd': 'durian'}, axis='index'))
'''
foo bar three
apple -0.807015 -0.779197 NaN
banana -1.734993 0.476688 -0.688966
c 0.266096 -0.161016 -0.343194
durian NaN 0.415248 0.774356
foo bar three
a -0.807015 -0.779197 NaN
b -1.734993 0.476688 -0.688966
c 0.266096 -0.161016 -0.343194
d NaN 0.415248 0.774356
one two three
apple -0.807015 -0.779197 NaN
banana -1.734993 0.476688 -0.688966
c 0.266096 -0.161016 -0.343194
durian NaN 0.415248 0.774356'''
print('*'*44)
print(s)
print(s.rename('scalar-name'))
# '''a -0.453875
# b 0.296215
# c 3.255956
# d -0.775343
# e 0.189150
# dtype: float64
# a -0.453875
# b 0.296215
# c 3.255956
# d -0.775343
# e 0.189150
# Name: scalar-name, dtype: float64'''