【數據分析可視化】Mapping和Replace

DataFrame插入新列,引出Map

import numpy as np
import pandas as pd
from pandas import Series, DataFrame
# 通過字典創建DataFrame
df1 = DataFrame({'城市':['北京','上海','廣州'],'人口':[1000,2000,3000]})
df1
城市 人口
0 北京 1000
1 上海 2000
2 廣州 3000
# 給DataFrame增加一列(直接賦值)
# 缺點:要關注順序
df1['GDP'] = Series([100,200,300])
df1
城市 人口 GDP
0 北京 1000 100
1 上海 2000 200
2 廣州 3000 300
# 通過城市增加GDPMap
# 優點:無需關注順序
gdp_map = {'北京':300,'上海':400,'廣州':500}
# 也是新一列就是賦值方式是map
df1['GDPMap'] = df1['城市'].map(gdp_map)
df1
城市 人口 GDP GDPMap
0 北京 1000 100 300
1 上海 2000 200 400
2 廣州 3000 300 500

直接Series插入的列(坑:1順序2索引值改動對應)

# 索引值如果自定義
# 通過字典創建DataFrame
df1 = DataFrame({'城市':['北京','上海','廣州'],'人口':[1000,2000,3000]},index=['A','B','C'])
df1
城市 人口
A 北京 1000
B 上海 2000
C 廣州 3000
# 問題: 新列值爲nan
# 給DataFrame增加一列(直接賦值)
# 缺點:要關注順序
df1['GDP'] = Series([100,200,300])
df1
城市 人口 GDP
A 北京 1000 NaN
B 上海 2000 NaN
C 廣州 3000 NaN
# 解決: 指定列值
# 麻煩,因此建議直接用map()字典對應
df1['GDP'] = Series([100,200,300], index=['A','B','C'])
df1
城市 人口 GDP
A 北京 1000 100
B 上海 2000 200
C 廣州 3000 300

Replace in Series

s1 = Series(np.arange(10))
s1
0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
dtype: int64
# 替換(字典也行)
s1.replace(1,np.nan)
0    0.0
1    NaN
2    2.0
3    3.0
4    4.0
5    5.0
6    6.0
7    7.0
8    8.0
9    9.0
dtype: float64
# 多數據同時替換
s1.replace([1,2,3],[20,30,40])
0     0
1    20
2    30
3    40
4     4
5     5
6     6
7     7
8     8
9     9
dtype: int64
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章