Pandas データ分析実践 (2) - concat&merge&insert

前のセクションでは、データ フレームとシリーズの作成方法、チポトレ ファスト フード データの初期表示を実行してデータの予備的な理解を得る方法を学習しました。このセクションでは、データを結合する方法を学習します。

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

** コースウェアを整理するのは簡単ではありませんが、コースを通過してからコースの内容は良いと思いますので、いいねとブックマークにご協力ください。ありがとうございます♪(・ω・)ノ****転載の場合は出典を明記してください

おすすめ

転載: blog.csdn.net/zxxxlh123/article/details/115581702