Pandas資料合併及分組

2021-08-21 03:49:21 字數 3148 閱讀 1242

1、資料合併

import pandas as pd

staff_df = pd.dataframe([,,])

student_df = pd.dataframe([,,])

print(staff_df)

print()

print(student_df)

pd.merge(staff_df, student_df, how='outer', on='姓名')

# 或者

# staff_df.merge(student_df, how='outer', on='姓名')

pd.merge(staff_df, student_df, how='inner', on='姓名')

# 或者

# staff_df.merge(student_df, how='inner', on='姓名')

pd.merge(staff_df, student_df, how='left', on='姓名')

# 或者

# staff_df.merge(student_df, how='left', on='姓名')

pd.merge(staff_df, student_df, how='right', on='姓名')

# 或者

# staff_df.merge(student_df, how='right', on='姓名')

# 也可以按索引進行合併

staff_df.set_index('姓名', inplace=true)

student_df.set_index('姓名', inplace=true)

print(staff_df)

print(student_df)

pd.merge(staff_df, student_df, how='left', left_index=true, right_index=true)

# 或者

# staff_df.merge(student_df, how='left', left_index=true, right_index=true)

# 當資料中的列名不同時,使用left_on,right_on

staff_df.reset_index(inplace=true)

student_df.reset_index(inplace=true)

print(staff_df)

print(student_df)

staff_df.rename(columns=, inplace=true)

student_df.rename(columns=, inplace=true)

print(staff_df)

print(student_df)

pd.merge(staff_df, student_df, how='left', left_on='員工姓名', right_on='學生姓名')

# 如果兩個資料中包含有相同的列名(不是要合併的列)時,merge會自動加字尾作為區別

staff_df['位址'] = ['天津', '北京', '上海']

student_df['位址'] = ['天津', '上海', '廣州']

print(staff_df)

print(student_df)

pd.merge(staff_df, student_df, how='left', left_on='員工姓名', right_on='學生姓名')

# 也可指定字尾名稱

pd.merge(staff_df, student_df, how='left', left_on='員工姓名', right_on='學生姓名', suffixes=('(公司)', '(家鄉)'))

# 也可以指定多列進行合併,找出同乙個人的工作位址和家鄉位址相同的記錄

pd.merge(staff_df, student_df, how='inner', left_on=['員工姓名', '位址'], right_on=['學生姓名', '位址'])

# 獲取姓

# 獲取名

# 結果合併

print(staff_df)

report_data = pd.read_csv('./2015.csv')

report_data.head()

#groupby()

grouped = report_data.groupby('region')

print(type(grouped))

print(grouped.size())

# 迭代groupby物件

for group, frame in grouped:

print('{}地區的平均幸福指數:{},最高幸福指數:{},最低幸福指數{}'.format(group, mean_score, max_score, min_score))

# 自定義函式進行分組

# 按照幸福指數排名進行劃分,1-10, 10-20, >20

# 如果自定義函式,操作針對的是index

defget_rank_group

(rank):

rank_group = ''

if rank <= 10:

rank_group = '0 -- 10'

elif rank <= 20:

rank_group = '10 -- 20'

else:

rank_group = '> 20'

return rank_group

grouped = report_data2.groupby(get_rank_group)

for group, frame in grouped:

# 實際專案中,通常可以先人為構造出乙個分組列,然後再進行groupby

# 按照score的整數部分進行分組

# 按照幸福指數排名進行劃分,1-10, 10-20, >20

# 如果自定義函式,操作針對的是index

grouped = report_data.groupby('score group')

for group, frame in grouped:

print('幸福指數整數部分為{}的分組資料個數:{}'.format(group, len(frame)))

import numpy as np

pandas資料合併

pandas 提供了三種主要方法可以對資料進行合併 pandas.merge 方法 資料庫風格的合併 例如,通過merge 方法將兩個dataframe合併 on name 的意思是將name列當作鍵 預設情況下,merge做的是內連線 inner 即鍵的交集。其他方式還有左連線 left 右連線 ...

Pandas之資料分組

df.groupby by none axis 0,default 0 level none int,level name,or sequence of such,default none as index true bool,default true sort true group keys tr...

如何對資料進行合併及分組

今天在論壇中被問到這樣乙個問題,就是有乙個 格式大致如下 沒有按照正規化設計,現在想對其進行查詢,而且能進行分組彙總。我整理乙個例子如下,對該問題進行解釋 1.建立乙個 日期 datetime null,幣種1 nchar 10 null,金額1 decimal 18,0 null,幣種2 ncha...