series 合并pandas_机器学习 Pandas 18:合并 ( 带答案、注释 )

合并 (一)

1. 导入必要的库

import pandas as pd
import numpy as np

2. 从地址导入数据集cars1和cars2

cars1 = pd.read_csv("https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/05_Merge/Auto_MPG/cars1.csv")
cars2 = pd.read_csv("https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/05_Merge/Auto_MPG/cars2.csv")

3. 打印cars1、cars2的前五行

cars1.head()
cars2.head()

4. 看来我们的第一个数据集有一些空白列,删去那些列

cars1 = cars1.loc[:, "mpg":"car"]
cars1.head()

5. 每个数据集观测值的大小是多少?

print(cars1.shape)
print(cars2.shape)

6. 将cars1和cars2合并成一个DataFrame叫做cars

cars = cars1.append(cars2)
cars

# 这里的append使得在原有的cars1的行数中再添加cars2了

7. 产生一组随机的Series从15000到73000,名为nr_owners。

nr_owners = np.random.randint(15000, high=73001, size=398, dtype='l')
nr_owners

8. 将列nr_owners补充到中的car中,列名为owners

cars['owners'] = nr_owners
cars.tail()

合并 (二)

1. 导入必要的库

import pandas as pd

2. 创建3个数据集

raw_data_1 = {
        'subject_id': ['1', '2', '3', '4', '5'],
        'first_name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 
        'last_name': ['Anderson', 'Ackerman', 'Ali', 'Aoni', 'Atiches']}

raw_data_2 = {
        'subject_id': ['4', '5', '6', '7', '8'],
        'first_name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 
        'last_name': ['Bonder', 'Black', 'Balwner', 'Brice', 'Btisan']}

raw_data_3 = {
        'subject_id': ['1', '2', '3', '4', '5', '7', '8', '9', '10', '11'],
        'test_id': [51, 15, 15, 61, 16, 14, 15, 1, 61, 16]}

3. 将每个DataFrame赋值给变量data1,data2,data3

data1 = pd.DataFrame(raw_data_1, columns = ['subject_id', 'first_name', 'last_name'])
data2 = pd.DataFrame(raw_data_2, columns = ['subject_id', 'first_name', 'last_name'])
data3 = pd.DataFrame(raw_data_3, columns = ['subject_id','test_id'])

data3

4. 沿着行连接这两个数据集data1, data2,并分配给变量all_data

all_data = pd.concat([data1, data2])
all_data

# concat使得两个数据集合并起来 

5. 沿着列将这两个数据集合并,并分配给变量all_data_col

all_data_col = pd.concat([data1, data2], axis = 1)
all_data_col

# axis 表示沿着列合并

6. 打印 data3

data3

7. 沿着subject_id值合并all_data和data3

pd.merge(all_data, data3, on='subject_id')

# on='subject_id'表示沿着subject_id

8. 在data1和data2上只合并具有相同“subject_id”的数据

pd.merge(data1, data2, on='subject_id', how='inner')

#  这里只有4、5是相同的subject_id
#  how='inner'表示取交集

9. 合并data1和data2中的所有值,并在可能的情况下,将两边的记录进行匹配

pd.merge(data1, data2, on='subject_id', how='outer')

# 原有8行,匹配了1行,所以匹配后只有7行

合并 (三)

1. 导入必要的库

import pandas as pd
import numpy as np

2. 创建3个不同的系列,每个系列长度为100,如下所示:(1)第一个随机数为从1到4。(2)第二个随机数为从1到3。(3)第三个随机数为从10,000到30,000。

s1 = pd.Series(np.random.randint(1, high=5, size=100, dtype='l'))
s2 = pd.Series(np.random.randint(1, high=4, size=100, dtype='l'))
s3 = pd.Series(np.random.randint(10000, high=30001, size=100, dtype='l'))

print(s1, s2, s3)

3. 连接列来创建一个数据集

housemkt = pd.concat([s1, s2, s3], axis=1)
housemkt.head()

4. 将列的名称更改为bedrs, bathrs, price_sqr_meter

housemkt.rename(columns = {0: 'bedrs', 1: 'bathrs', 2: 'price_sqr_meter'}, inplace=True)
housemkt.head()

# .rename使得重命名

5. 用3个系列的值创建一个列的DataFrame,并将其赋值给‘bigcolumn’

bigcolumn = pd.concat([s1, s2, s3], axis=0)

bigcolumn = bigcolumn.to_frame()
print(type(bigcolumn))

bigcolumn

# axis=0使得以行来连接
# 它是一个Series,所以我们需要将它转换为一个数据集,因此要使用.to_frame()

6. 操作似乎只持续到索引99,这是真的吗?

len(bigcolumn)

7. 重新索引数据帧,使其从0到299

bigcolumn.reset_index(drop=True, inplace=True)
bigcolumn

# 不想保留原来的index,使用参数 drop=True,因此这里就不是原来的索引0-99而是索引0-299
# inplace:是否创建一个新的dataframe

更多《机器学习》,关注专栏 ♬ ♬

注:因为专栏不止我一位作者!

加油!♥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值