python分析Zephyr数据

import numpy as np
import pandas as pd
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.graph_objects as go
import statsmodels.api as sm

# 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

import warnings
warnings.filterwarnings("ignore", category=UserWarning)


import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# 指定字体
font = FontProperties(fname=r'C:\WINDOWS\Fonts\simhei.ttf')  # 请根据你的系统和字体路径修改
file_path = r'G:\data\Zephyr中国海外并购数据库\workfile.xlsx'
data = pd.read_excel(file_path)
#print(data.head())
# 打印变量名称及类型
for column in data.columns:
    print(f"变量名称: {column}, 类型: {data[column].dtype}")
变量名称: Unnamed: 0, 类型: float64
变量名称: Deal Number, 类型: int64
变量名称: Acquiror name, 类型: object
变量名称: Acquiror country code, 类型: object
变量名称: Target name, 类型: object
变量名称: Target country code, 类型: object
变量名称: Deal type, 类型: object
变量名称: Deal status, 类型: object
变量名称: Deal value th EUR, 类型: object
变量名称: Target business description(s), 类型: object
变量名称: Acquiror business description(s), 类型: object
变量名称: Deal type.1, 类型: object
变量名称: Deal sub-type, 类型: object
变量名称: Deal financing, 类型: object
变量名称: Deal method of payment, 类型: object
变量名称: Deal method of payment value th EUR, 类型: object
变量名称: Deal status.1, 类型: object
变量名称: Rumour date, 类型: datetime64[ns]
变量名称: Announced date, 类型: datetime64[ns]
变量名称: Expected completion date, 类型: datetime64[ns]
变量名称: Assumed completion date, 类型: datetime64[ns]
变量名称: Completed date, 类型: datetime64[ns]
变量名称: Postponed date, 类型: datetime64[ns]
变量名称: Withdrawn  date, 类型: datetime64[ns]
变量名称: Last deal status date, 类型: datetime64[ns]
变量名称: Last deal value, offer price, bid premium update date, 类型: datetime64[ns]
变量名称: Last deal status update date, 类型: datetime64[ns]
变量名称: Last % of stake update date, 类型: datetime64[ns]
变量名称: Last acquiror, target, vendor update date, 类型: datetime64[ns]
变量名称: Last advisor update date, 类型: datetime64[ns]
变量名称: Last deal comment, rationale update date, 类型: datetime64[ns]
变量名称: Last update, 类型: datetime64[ns]
变量名称: Deal value th EUR.1, 类型: object
变量名称: Deal value (Native currency) th LCU, 类型: object
变量名称: Deal equity value th EUR, 类型: object
变量名称: Deal equity value (Native currency) th LCU, 类型: object
变量名称: Deal enterprise value th EUR, 类型: object
变量名称: Deal enterprise value (Native currency) th LCU, 类型: object
变量名称: Deal modelled enterprise value th EUR, 类型: object
变量名称: Deal modelled enterprise value (Native currency) th LCU, 类型: object
变量名称: Deal total target value th EUR, 类型: object
变量名称: Deal total target value (Native currency) th LCU, 类型: object
变量名称: Modelled Fee Income th EUR, 类型: object
变量名称: As Reported Fee Income th EUR, 类型: object
变量名称: Initial stake (%), 类型: object
变量名称: Acquired stake (%), 类型: object
变量名称: Final stake (%), 类型: object
变量名称: IRR (%), 类型: float64
变量名称: Native currency, 类型: object
# 提取“Acquiror country code”列并统计每个类别的出现次数
acquiror_country_code_counts = data['Acquiror country code'].value_counts()

# 打印结果
print("Acquiror country code 变量下有几类字符,分别出现了多少次:")
for code, count in acquiror_country_code_counts.items():
    print(f"字符: {code}, 出现次数: {count}")
Acquiror country code 变量下有几类字符,分别出现了多少次:
字符: CN, 出现次数: 12288
字符: US, 出现次数: 4212
字符: HK, 出现次数: 1315
字符: KY, 出现次数: 1041
字符: JP, 出现次数: 761
字符: SG, 出现次数: 616
字符: VG, 出现次数: 441
字符: GB, 出现次数: 262
字符: DE, 出现次数: 257
字符: FR, 出现次数: 230
字符: KR, 出现次数: 218
字符: TW, 出现次数: 190
字符: BM, 出现次数: 155
字符: CA, 出现次数: 136
字符: CH, 出现次数: 118
字符: AU, 出现次数: 109
字符: IL, 出现次数: 99
字符: NL, 出现次数: 89
字符: MY, 出现次数: 84
字符: IT, 出现次数: 80
字符: IN, 出现次数: 59
字符: SE, 出现次数: 45
字符: FI, 出现次数: 44
字符: BE, 出现次数: 39
字符: ES, 出现次数: 35
字符: NO, 出现次数: 29
字符: LU, 出现次数: 29
字符: TH, 出现次数: 29
字符: RU, 出现次数: 28
字符: BR, 出现次数: 27
字符: MU, 出现次数: 25
字符: DK, 出现次数: 21
字符: II, 出现次数: 19
字符: UZ, 出现次数: 15
字符: KZ, 出现次数: 14
字符: BY, 出现次数: 14
字符: CZ, 出现次数: 14
字符: WS, 出现次数: 13
字符: IE, 出现次数: 13
字符: AT, 出现次数: 13
字符: VN, 出现次数: 13
字符: SA, 出现次数: 9
字符: ID, 出现次数: 8
字符: ZA, 出现次数: 8
字符: HU, 出现次数: 8
字符: GR, 出现次数: 7
字符: MO, 出现次数: 6
字符: PT, 出现次数: 6
字符: PL, 出现次数: 6
字符: PK, 出现次数: 6
字符: AR, 出现次数: 6
字符: CL, 出现次数: 6
字符: CO, 出现次数: 5
字符: EE, 出现次数: 5
字符: ZW, 出现次数: 5
字符: EG, 出现次数: 4
字符: NG, 出现次数: 4
字符: AE, 出现次数: 4
字符: PH, 出现次数: 3
字符: CU, 出现次数: 3
字符: BG, 出现次数: 3
字符: AM, 出现次数: 3
字符: NZ, 出现次数: 3
字符: CW, 出现次数: 3
字符: TR, 出现次数: 3
字符: UA, 出现次数: 2
字符: LT, 出现次数: 2
字符: IR, 出现次数: 2
字符: CY, 出现次数: 2
字符: CD, 出现次数: 2
字符: SC, 出现次数: 2
字符: KH, 出现次数: 2
字符: QA, 出现次数: 2
字符: DZ, 出现次数: 2
字符: MA, 出现次数: 2
字符: SI, 出现次数: 2
字符: HR, 出现次数: 2
字符: SK, 出现次数: 1
字符: UY, 出现次数: 1
字符: OM, 出现次数: 1
字符: TJ, 出现次数: 1
字符: GN, 出现次数: 1
字符: GE, 出现次数: 1
字符: MD, 出现次数: 1
字符: BH, 出现次数: 1
字符: MX, 出现次数: 1
字符: PA, 出现次数: 1
字符: KW, 出现次数: 1
字符: KN, 出现次数: 1
字符: VE, 出现次数: 1
字符: SL, 出现次数: 1
字符: ZM, 出现次数: 1
字符: LI, 出现次数: 1
字符: MN, 出现次数: 1
字符: UG, 出现次数: 1
字符: PE, 出现次数: 1
字符: RS, 出现次数: 1
字符: BD, 出现次数: 1
# 绘制饼状图
plt.figure(figsize=(8, 8))
plt.pie(acquiror_country_code_counts, labels=acquiror_country_code_counts.index, autopct='%1.1f%%', startangle=140)
plt.title('Acquiror country code 分布饼状图')
plt.show()

在这里插入图片描述

# 提取“Acquiror country code”列并统计每个类别的出现次数
acquiror_country_code_counts = data['Acquiror country code'].value_counts()

# 将出现次数小于2.6%的字符合并为一个类别
threshold = 0.026
other_codes = acquiror_country_code_counts[acquiror_country_code_counts / acquiror_country_code_counts.sum() < threshold].index
data['Acquiror country code'] = data['Acquiror country code'].replace(other_codes, '其他')

# 重新计算合并后的各类别出现次数
acquiror_country_code_counts = data['Acquiror country code'].value_counts()

# 绘制饼状图
plt.figure(figsize=(8, 8))
plt.pie(acquiror_country_code_counts, labels=acquiror_country_code_counts.index, autopct='%1.1f%%', startangle=140)
plt.title('Acquiror country code 分布饼状图')
plt.show()

在这里插入图片描述

deal_value_column = data['Deal value th EUR']
print(f"Deal value th EUR 变量的类型是:{deal_value_column.dtype}")
Deal value th EUR 变量的类型是:object
data['Deal value th EUR'] = pd.to_numeric(data['Deal value th EUR'], errors='coerce')
# 打印变量类型
print(f"Deal value th EUR 变量的类型是:{data['Deal value th EUR'].dtype}")
Deal value th EUR 变量的类型是:float64
deal_value_column = data['Rumour date']
print(f"Rumour date 变量的类型是:{deal_value_column.dtype}")
Rumour date 变量的类型是:datetime64[ns]
# 输出 "Rumour date" 变量的基本统计信息
rumour_date_summary = data['Rumour date'].describe(datetime_is_numeric=True)
# rumour_date_summary = data['Rumour date'].describe()

# 打印总结信息
print("Rumour date 变量的基本统计信息:")
print(rumour_date_summary)
Rumour date 变量的基本统计信息:
count                            25367
mean     2014-01-22 00:27:11.473962240
min                1995-12-31 00:00:00
25%                2011-01-11 00:00:00
50%                2015-10-27 00:00:00
75%                2017-10-05 00:00:00
max                2019-08-27 00:00:00
Name: Rumour date, dtype: object
# 将 "Rumour date" 和 "Acquiror country code" 列作为索引,计算 "Deal value th EUR" 列的总和
deal_value_sum_by_group = data.groupby(['Rumour date', 'Acquiror country code'])['Deal value th EUR'].sum()

# 打印结果
print("根据 Rumour date 和 Acquiror country code 计算的 Deal value th EUR 总和:")
print(deal_value_sum_by_group)
根据 Rumour date 和 Acquiror country code 计算的 Deal value th EUR 总和:
Rumour date  Acquiror country code
1995-12-31   US                             0.00
1997-02-28   CN                             0.00
1997-06-06   CN                       1043196.93
1997-06-24   CN                         12158.26
1998-02-04   其他                             0.00
                                         ...    
2019-08-24   US                             0.00
2019-08-26   CN                         25983.52
             US                             0.00
2019-08-27   CN                       1991362.14
             其他                         97825.48
Name: Deal value th EUR, Length: 8937, dtype: float64
# 筛选出 "Acquiror country code" 为 "CN" 的样本
cn_samples = data[data['Acquiror country code'] == 'CN']

# 设置图形样式
sns.set(style="whitegrid")

# 画出时间趋势图
plt.figure(figsize=(12, 6))
sns.lineplot(x='Rumour date', y='Deal value th EUR', data=cn_samples)
plt.title('Acquiror country code 为 CN 的样本时间趋势图', fontproperties=font)
plt.xlabel('日期', fontproperties=font)
plt.ylabel('Deal value th EUR', fontproperties=font)
plt.show()

在这里插入图片描述

### tabulate ###
# 按年对 "Rumour date" 进行分组,计算 "Deal value th EUR" 列的总和
deal_value_sum_by_year = data.groupby([data['Rumour date'].dt.year, 'Acquiror country code'])['Deal value th EUR'].sum()
#日期频率: deal_value_sum_by_group = data.groupby(['Rumour date', 'Acquiror country code'])['Deal value th EUR'].sum()

# 打印结果
print("根据 Rumour date 年份和 Acquiror country code 计算的 Deal value th EUR 总和:")
print(deal_value_sum_by_year)



### 画图 ###
# 筛选出 "Acquiror country code" 为 "CN" 的样本
cn_samples = data[data['Acquiror country code'] == 'CN']

# 设置图形样式
sns.set(style="whitegrid")

# 画出 "Acquiror country code" 为 "CN" 样本的时间趋势图
plt.figure(figsize=(12, 6))
sns.lineplot(x=cn_samples['Rumour date'].dt.year, y=cn_samples['Deal value th EUR'], estimator='sum')
plt.title('Acquiror country code 为 CN 的样本时间趋势图', fontproperties=font)
plt.xlabel('年份', fontproperties=font)
plt.ylabel('Deal value th EUR 总和', fontproperties=font)
plt.show()
根据 Rumour date 年份和 Acquiror country code 计算的 Deal value th EUR 总和:
Rumour date  Acquiror country code
1995         US                              0.00
1997         CN                        1055355.19
1998         US                              0.00
             其他                              0.00
1999         CN                          11489.88
                                         ...     
2019         JP                        1453527.09
             KY                         135947.13
             SG                        1986665.50
             US                        4812972.23
             其他                       13771393.89
Name: Deal value th EUR, Length: 142, dtype: float64

在这里插入图片描述

# 设置图形样式
sns.set(style="whitegrid")

# 画出 "Acquiror country code" 为 "CN" 样本的时间趋势图
plt.figure(figsize=(12, 6))
plot = sns.lineplot(x=cn_samples['Rumour date'].dt.year, y=cn_samples['Deal value th EUR'], estimator='sum')
plt.title('Acquiror country code 为 CN 的样本时间趋势图', fontproperties=font)
plt.xlabel('年份', fontproperties=font)
plt.ylabel('Deal value th EUR 总和', fontproperties=font)

# 设置 x 轴刻度
years = sorted(cn_samples['Rumour date'].dt.year.unique())
plot.set_xticks(years)

plt.show()

在这里插入图片描述

# 筛选出 "Acquiror country code" 为 "CN" 和 "US" 的样本
cn_samples = data[data['Acquiror country code'] == 'CN']
us_samples = data[data['Acquiror country code'] == 'US']

# 设置图形样式
sns.set(style="whitegrid")

# 画出 "Acquiror country code" 为 "CN" 和 "US" 样本的时间趋势图
plt.figure(figsize=(12, 6))
plot = sns.lineplot(x=cn_samples['Rumour date'].dt.year, y=cn_samples['Deal value th EUR'], estimator='sum', label='CN')
sns.lineplot(x=us_samples['Rumour date'].dt.year, y=us_samples['Deal value th EUR'], estimator='sum', label='US')
plt.title('Acquiror country code 为 CN 和 US 的样本时间趋势图', fontproperties=font)
plt.xlabel('年份', fontproperties=font)
plt.ylabel('Deal value th EUR 总和', fontproperties=font)
plt.legend()

# 设置 x 轴刻度
years = sorted(data['Rumour date'].dt.year.unique())
plot.set_xticks(years)

plt.show()

在这里插入图片描述

# 筛选出 "Acquiror country code" 为 "CN" 和 "US" 的样本
cn_samples = data[data['Acquiror country code'] == 'CN']
us_samples = data[data['Acquiror country code'] == 'US']

# 设置图形样式
sns.set(style="whitegrid")

# 画出 "Acquiror country code" 为 "CN" 样本的时间趋势图
plt.figure(figsize=(12, 6))
plot_cn = sns.lineplot(x=cn_samples['Rumour date'].dt.year, y=cn_samples['Deal value th EUR'], estimator='sum', label='CN', ci = None )

# 创建第二个纵坐标轴并画出 "Acquiror country code" 为 "US" 样本的时间趋势图
plot_us = plot_cn.twinx()
sns.lineplot(x=us_samples['Rumour date'].dt.year, y=us_samples['Deal value th EUR'], estimator='sum', color='orange', label='US', ci = None )

# 设置标题和标签
plt.title('Acquiror country code 为 CN 和 US 的样本时间趋势图', fontproperties=font)
plt.xlabel('年份', fontproperties=font)
plt.ylabel('Deal value th EUR 总和', fontproperties=font)

# 设置 x 轴刻度
years = sorted(data['Rumour date'].dt.year.unique())
plot_cn.set_xticks(years)

# 添加图例
plot_cn.legend(loc='upper left')
plot_us.legend(loc='upper right')

plt.show()

在这里插入图片描述

# 设置图形样式
sns.set(style="whitegrid")

# 创建数据透视表,用于制作热力图
heatmap_data = data.pivot_table(values='Deal value th EUR', index='Acquiror country code', columns='Rumour date', aggfunc='sum')

# 画出热力图
plt.figure(figsize=(12, 8))
sns.heatmap(heatmap_data, cmap='Blues', annot=True, fmt='.0f', cbar_kws={'label': 'Deal value th EUR'})
plt.title('Deal value th EUR 热力图', fontproperties=font)
plt.xlabel('Rumour date', fontproperties=font)
plt.ylabel('Acquiror country code', fontproperties=font)

plt.show()

在这里插入图片描述

# 将 "Rumour date" 按年分组,并计算每个单位每年的 "Deal value th EUR" 总和
grouped_data = data.groupby([data['Rumour date'].dt.year, 'Acquiror country code'])['Deal value th EUR'].sum().reset_index()

# 创建数据透视表,用于制作热力图
heatmap_data = grouped_data.pivot_table(values='Deal value th EUR', index='Acquiror country code', columns='Rumour date', aggfunc='sum')

# 设置图形样式
sns.set(style="whitegrid")

# 画出热力图
plt.figure(figsize=(12, 8))
sns.heatmap(heatmap_data, cmap='Blues',  fmt='.0f', cbar_kws={'label': 'Deal value th EUR'})  #annot=True,
plt.title('Deal value th EUR 热力图', fontproperties=font)
plt.xlabel('Rumour date', fontproperties=font)
plt.ylabel('Acquiror country code', fontproperties=font)

plt.show()

在这里插入图片描述

# 添加年度频率的 "Rumour date" 列
data['Rumour year'] = data['Rumour date'].dt.year

# 按照指定维度计算 "Deal value th EUR" 的总和
result = data.groupby(['Acquiror country code', 'Target country code', 'Rumour year'])['Deal value th EUR'].sum().reset_index()

# 打印结果
print(result)
     Acquiror country code Target country code  Rumour year  Deal value th EUR
0                       CN                  AE         2005               0.00
1                       CN                  AE         2006               0.00
2                       CN                  AE         2007               0.00
3                       CN                  AE         2011               0.00
4                       CN                  AE         2015            1891.49
...                    ...                 ...          ...                ...
1821                    其他                  ZM         2003               0.00
1822                    其他                  ZM         2004               0.00
1823                    其他                  ZM         2016               0.00
1824                    其他                  ZW         2006               0.00
1825                    其他                  ZW         2008               0.00

[1826 rows x 4 columns]
# 自定义函数,将 "Target country code" 映射到指定的地区
def map_to_region(country_code):
    # 根据实际情况补充映射规则
    if country_code in ['US']:
        return '美国'
    elif country_code in ['FR', 'DE', 'GB', 'IT', 'ES']:
        return '欧洲'
    elif country_code in ['AU', 'NZ']:
        return '大洋洲'
    elif country_code in ['SG', 'MY', 'TH', 'ID', 'VN', 'PH']:
        return '东南亚'
    elif country_code in ['SA', 'AE', 'IL']:
        return '西亚'
    elif country_code in ['ZA', 'NG', 'KE']:
        return '非洲'
    else:
        return '其他'

# 创建新的 "dest" 变量
data['dest'] = data['Target country code'].apply(map_to_region)

# 创建一个新的数据框,用于绘制桑基图
sankey_data = data.groupby(['Acquiror country code', 'dest']).agg({'Deal value th EUR': 'sum'}).reset_index()

# 使用plotly创建桑基图
fig = go.Figure(data=[go.Sankey(
    node=dict(
        pad=15,
        thickness=20,
        line=dict(color="black", width=0.5),
        label=sankey_data['Acquiror country code'].append(sankey_data['dest']).unique(),
    ),
    link=dict(
        source=sankey_data['Acquiror country code'].map(lambda x: list(sankey_data['Acquiror country code'].unique()).index(x)),
        target=sankey_data['dest'].map(lambda x: len(sankey_data['Acquiror country code'].unique()) + list(sankey_data['dest'].unique()).index(x)),
        value=sankey_data['Deal value th EUR']
    )
)])

# 设置图形布局
fig.update_layout(title_text="Sankey Diagram", font_size=10)
fig.show()

在这里插入图片描述

# 提取 "dest" 等于 "大洋洲" 的样本
oceania_data = data[data['dest'] != '大洋洲']

# 创建一个新的数据框,用于绘制桑基图
sankey_data = oceania_data.groupby(['Acquiror country code', 'dest']).agg({'Deal value th EUR': 'sum'}).reset_index()

# 使用plotly创建桑基图
fig = go.Figure(data=[go.Sankey(
    node=dict(
        pad=15,
        thickness=20,
        line=dict(color="black", width=0.5),
        label=sankey_data['Acquiror country code'].append(sankey_data['dest']).unique(),
    ),
    link=dict(
        source=sankey_data['Acquiror country code'].map(lambda x: list(sankey_data['Acquiror country code'].unique()).index(x)),
        target=sankey_data['dest'].map(lambda x: len(sankey_data['Acquiror country code'].unique()) + list(sankey_data['dest'].unique()).index(x)),
        value=sankey_data['Deal value th EUR']
    )
)])

# 设置图形布局
fig.update_layout(title_text="Sankey Diagram - Oceania", font_size=10)
fig.show()

在这里插入图片描述

# 对 'Deal value th EUR' 取对数
data['Log_Deal_Value'] = np.log(data['Deal value th EUR'])

# 设置图形风格
sns.set(style="whitegrid")

# 绘制核密度图
plt.figure(figsize=(10, 6))
sns.kdeplot(data['Log_Deal_Value'], fill=True, color='skyblue', label='Log(Deal value)')
plt.title('Kernel Density Plot of Log(Deal value)')
plt.xlabel('Log(Deal value)')
plt.ylabel('Density')
plt.legend()
plt.show()

在这里插入图片描述

# 提取CN样本和US样本
cn_data = data[data['Acquiror country code'] == 'CN']
us_data = data[data['Acquiror country code'] == 'US']

# 对 'Deal value th EUR' 取对数
data['Log_Deal_Value'] = np.log(data['Deal value th EUR'])

# 设置图形风格
sns.set(style="whitegrid")

# 绘制核密度图
plt.figure(figsize=(10, 6))

# 绘制CN样本的核密度图
sns.kdeplot(cn_data['Log_Deal_Value'], fill=True, label='CN', color='blue')

# 绘制US样本的核密度图
sns.kdeplot(us_data['Log_Deal_Value'], fill=True, label='US', color='orange')

plt.title('Kernel Density Plot of Log(Deal Value) for CN and US Samples')
plt.xlabel('Log(Deal value th EUR)')
plt.ylabel('Density')
plt.legend()
plt.show()

在这里插入图片描述

# 提取CN样本和US样本
cn_data = data[data['Acquiror country code'] == 'CN']
us_data = data[data['Acquiror country code'] == 'US']

# 设置图形风格
sns.set(style="whitegrid")

# 创建一个包含两个子图的图形
fig, axes = plt.subplots(1, 2, figsize=(12, 6))

# 绘制CN样本的核密度图
sns.kdeplot(cn_data['Log_Deal_Value'], fill=True, label='CN', color='blue', ax=axes[0])
axes[0].set_title('Kernel Density Plot for CN Samples')
axes[0].set_xlabel('Log(Deal value th EUR)')
axes[0].set_ylabel('Density')

# 绘制US样本的核密度图
sns.kdeplot(us_data['Log_Deal_Value'], fill=True, label='US', color='orange', ax=axes[1])
axes[1].set_title('Kernel Density Plot for US Samples')
axes[1].set_xlabel('Log(Deal value th EUR)')
axes[1].set_ylabel('Density')

# 调整子图的布局
plt.tight_layout()
plt.show()

在这里插入图片描述

# 选择CN样本
cn_data = data[data['Acquiror country code'] == 'CN']

# 提取年份和对应的 'Deal value th EUR'
cn_yearly_total = cn_data.groupby(cn_data['Rumour date'].dt.year)['Deal value th EUR'].sum()

# 使用matplotlib绘制柱状图
plt.figure(figsize=(10, 6))
cn_yearly_total.plot(kind='bar', color='blue')
plt.title('Yearly Total Deal Value for CN Samples')
plt.xlabel('Year')
plt.ylabel('Total Deal Value (th EUR)')
plt.show()

在这里插入图片描述

# 分别选择CN样本和US样本
cn_data = data[data['Acquiror country code'] == 'CN']
us_data = data[data['Acquiror country code'] == 'US']

# 提取年份和对应的 'Deal value th EUR'
cn_yearly_total = cn_data.groupby(cn_data['Rumour date'].dt.year)['Deal value th EUR'].sum()
us_yearly_total = us_data.groupby(us_data['Rumour date'].dt.year)['Deal value th EUR'].sum()

# 使用matplotlib绘制柱状图
plt.figure(figsize=(12, 6))
plt.bar(cn_yearly_total.index - 0.2, cn_yearly_total.values, width=0.4, color='blue', label='CN')
plt.bar(us_yearly_total.index + 0.2, us_yearly_total.values, width=0.4, color='orange', label='US')

plt.title('Yearly Total Deal Value for CN and US Samples')
plt.xlabel('Year')
plt.ylabel('Total Deal Value (th EUR)')
plt.legend()
plt.show()

在这里插入图片描述

# 分别选择CN样本和US样本
cn_data = data[data['Acquiror country code'] == 'CN']
us_data = data[data['Acquiror country code'] == 'US']

# 提取年份和对应的 'Deal value th EUR'
cn_yearly_total = cn_data.groupby(cn_data['Rumour date'].dt.year)['Deal value th EUR'].sum()
us_yearly_total = us_data.groupby(us_data['Rumour date'].dt.year)['Deal value th EUR'].sum()

# 创建一个包含两个子图的图形
fig, axes = plt.subplots(1, 2, figsize=(14, 6))

# 在第一个子图上绘制CN样本的柱状图
axes[0].bar(cn_yearly_total.index, cn_yearly_total.values, color='blue', label='CN')
axes[0].set_title('Yearly Total Deal Value for CN Samples')
axes[0].set_xlabel('Year')
axes[0].set_ylabel('Total Deal Value (th EUR)')
axes[0].legend()

# 在第二个子图上绘制US样本的柱状图
axes[1].bar(us_yearly_total.index, us_yearly_total.values, color='orange', label='US')
axes[1].set_title('Yearly Total Deal Value for US Samples')
axes[1].set_xlabel('Year')
axes[1].set_ylabel('Total Deal Value (th EUR)')
axes[1].legend()

# 调整子图的布局
plt.tight_layout()
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mengke25

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

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

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

打赏作者

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

抵扣说明:

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

余额充值