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)

 

离散化与分箱 

我们离散化的方法主要是将我们的数据进行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)

 

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

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()

 

 

 

等长分箱 

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

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()

 

 

 

 

等量分箱

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

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()

 

 二、数据的连接

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)

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

 

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来替代

 

 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)

 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)

数据合并 

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

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桜キャンドル淵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值