Pandas数据转换

目录

一、数据转换

离散化与分箱 

等长分箱 

等量分箱

 二、数据的连接

1.内联

2.左联 

 3.右联

 4.外联

数据合并 


一、数据转换

df['字段'].map(dict)

map函数需要我们利用字典来将我们字段所对应的映射关系传入。

import pandas as pd
gdp_city=pd.read_csv('city.csv')
print(gdp_city)
city_prov=pd.read_csv('city_prov.csv')
#将我们所要匹配的数据用zip函数组合成一个字典
dict_city=dict(zip(city_prov['City'],city_prov['prov']))
#使用map函数将我们的省份字段中按照城市字段在dict_city中对饮的值填充
gdp_city['省份']=gdp_city['城市'].map(dict_city)
print(gdp_city)

 Pandas数据转换_第1张图片

离散化与分箱 

我们离散化的方法主要是将我们的数据进行cut操作,分成不同的箱子,再给我们每个分箱打上不同的标签,再统计我们每个箱子中的数据元素个数

pd.cut(data,bins,labels)

data是我们的数据元素,bins是我们具体的分箱,labels为我们对每个分箱贴上的标签

bins=[0,2000,5000,10000,20000,40000]
group_names=['Small City','Middle City','mid-large City','Large City','Huge City']
a=pd.cut(gdp_city['2017年'],bins,labels=group_names)
gdp_city['size']=a
print(gdp_city)

 Pandas数据转换_第2张图片

如何将我们分箱的数据可视化?

x=pd.value_counts(a)
print(x)
import matplotlib.pyplot as plt
#将我们统计数值函数所返回的索引和具体的统计值作为我们图标的横纵坐标
plt.bar(pd.value_counts(a).index,
        pd.value_counts(a).values,
        width=0.8)
plt.show()

 Pandas数据转换_第3张图片

 Pandas数据转换_第4张图片

 

等长分箱 

即我们每个箱子的长度是均分的

x=pd.cut(gdp_city['2017年'],bins=5,precision=2,labels=group_names)
x1=pd.value_counts(x)
print(x1)
import matplotlib.pyplot as plt
plt.bar(x1.index,
        x1.values,
        width=0.8)
plt.show()

 Pandas数据转换_第5张图片

 

Pandas数据转换_第6张图片 

 

等量分箱

即每个箱子中的量是等量的

x=pd.qcut(gdp_city['2017年'],5,precision=2,labels=group_names)
x1=pd.value_counts(x)
print(x1)
import matplotlib.pyplot as plt
plt.bar(x1.index,
        x1.values,
        width=0.8)
plt.show()

Pandas数据转换_第7张图片

 Pandas数据转换_第8张图片

 二、数据的连接

1.内联

d.merge(要拼接的数据,要拼接的数据)

注意我们这里要拼接的数据的长度一定要是一样的 

gdp_2018=pd.DataFrame({'City':['上海','北京','深圳','广州','重庆','天津'],
                       'GDP':[32679,30320,24691,23000,20363,188809],
                       })
city_area=pd.DataFrame({'City':['重庆','哈尔滨','南宁','昆明','长春','临淇'],
                        'Area':[82400,5367.95,22111.98,21001.28,20571.06,17201.67]})
q=pd.merge(gdp_2018,city_area)
print(q)

这里我们只有一个元素是匹配上的

Pandas数据转换_第9张图片 

2.左联 

左联将我们能匹配得上的数据匹配到我们的左表

gdp_2018=pd.DataFrame({'City':['上海','北京','深圳','广州','重庆','天津'],
                       'GDP':[32679,30320,24691,23000,20363,188809],
                       })
city_area=pd.DataFrame({'City':['重庆','哈尔滨','南宁','昆明','长春','临淇'],
                        'Area':[82400,5367.95,22111.98,21001.28,20571.06,17201.67]})
q=pd.merge(gdp_2018,city_area,how='left')
print(q)

匹配不上的位置全部都用NAN来替代

Pandas数据转换_第10张图片 

 3.右联

gdp_2018=pd.DataFrame({'City':['上海','北京','深圳','广州','重庆','天津'],
                       'GDP':[32679,30320,24691,23000,20363,188809],
                       })
city_area=pd.DataFrame({'City':['重庆','哈尔滨','南宁','昆明','长春','临淇'],
                        'Area':[82400,5367.95,22111.98,21001.28,20571.06,17201.67]})
q=pd.merge(gdp_2018,city_area,how='right')
print(q)

Pandas数据转换_第11张图片

 4.外联

gdp_2018=pd.DataFrame({'City':['上海','北京','深圳','广州','重庆','天津'],
                       'GDP':[32679,30320,24691,23000,20363,188809],
                       })
city_area=pd.DataFrame({'City':['重庆','哈尔滨','南宁','昆明','长春','临淇'],
                        'Area':[82400,5367.95,22111.98,21001.28,20571.06,17201.67]})
q=pd.merge(gdp_2018,city_area,how='outer')
print(q)

Pandas数据转换_第12张图片

数据合并 

q=pd.concat([gdp_2018,city_area],axis=0,sort=True,ignore_index=True)
print(q)

Pandas数据转换_第13张图片

 

你可能感兴趣的:(python基础,python,机器学习,开发语言)