前のセクションでは、データ フレームとシリーズの作成方法、チポトレ ファスト フード データの初期表示を実行してデータの予備的な理解を得る方法を学習しました。このセクションでは、データを結合する方法を学習します。
3. データ統合
3.1 concat データの連結
pd.concat([df1,df2],axis = 0 ) は、 df1.append(df2),pd.concat([df1,df3],axis = 1 ) と同等です。
import pandas as pd
import numpy as np
#创建数据框
df1 = pd.DataFrame( data = np.random.randint (0,150,size = [10,3]),
index = list('ABCDEFGHIJ'),
columns = ['python','tensorflow','keras'])
df2 = pd.DataFrame(data = np.random.randint(0,150,size = [10,3]),
index = list('KLMNOPQRST'),
columns =['python','tensorflow','keras'])
df3 = pd.DataFrame(data = np.random.randint(0,150,size = [10,2]),
index = list('ABCDEFGHIJ'),
columns =['python','Paddle'])
#纵向堆叠,即按照行的维度进行合并
print(pd.concat([df1,df2],axis = 0))
print(df1.append(df2))#等价上一行,在df1后面追加
#横向扩展,即按照列的维度进行合并
print(pd.concat([df1,df3],axis = 1))
出力:
3.2インサートインサート
データフレームを横方向に拡張する際、指定した位置に挿入したい場合はinsertを使用し、パラメータlocで列インデックスの挿入位置を指定します。
df1.insert(loc = 1,column = 'Pytorch',value = 1024)
print(df1)
3.3 マージ
df1とdf3は横展開すると同じ列名になりますが、その時はこれを無視して直接concatで連結していました。ただし、データセットをマージする場合は、1 つ以上のキーに従ってデータを結合する必要があります。pd.merge を使用できます。パラメータ on は結合に応じたキー、パラメータ how は結合方法です。これは SQL の結合に似ています。
df_weigth = pd.DataFrame(data = {
'name':['softpo','Daniel','Brandon','Ella'],
'weight':[70,55,75,65]})#记录体重
df_height = pd.DataFrame(data = {
'name':['softpo','Daniel','Brandon','Cindy'],
'height':[172,170,170,160]})#记录身高
df3 = pd.DataFrame(data = {
'姓名':['softpo','Daniel','Brandon','Cindy'],
'height':[172,170,170,160]})#列名与上两个的'name'不一致,是'姓名'
#交集,以姓名为键,两个数据框都有姓名信息
print(pd.merge(df_weigth,df_height,on = 'name',how = 'inner'))
#以左边为主,不会出现'Cindy'信息
print(pd.merge(df_weigth,df_height,on = 'name',how = 'left'))
#以右边为主,不会出现'Ella'信息
print(pd.merge(df_weigth,df_height,on = 'name',how = 'right'))
#并集,左右合并依据不同名
print(pd.merge(df_weigth,df3,left_on = 'name',right_on = '姓名',how = 'outer'))
出力:
df1 = pd.DataFrame( data = np.random.randint (0,150,size = [10,3]),
index = list('ABCDEFGHIJ'),
columns = ['python','tensorflow','keras'])
#计算每个人三科的平均分,得到一个10*1的数据框
scores = pd.DataFrame(df1.mean(axis = 1).round(1),columns={
'平均值'})
print(scores)
#将平均分与原数据框合并,通过index进行关联
print(pd.merge(df1,scores,left_index=True,right_index=True))
#也可以使用上面学习的insert,但是原数据框会直接改变
df1.insert(loc = 3,column='平均值',value=scores)
print(df1)
出力:
今日はここに書いて、また次回お会いしましょうO(∩_∩)O
** コースウェアを整理するのは簡単ではありませんが、コースを通過してからコースの内容は良いと思いますので、いいねとブックマークにご協力ください。ありがとうございます♪(・ω・)ノ****転載の場合は出典を明記してください