```python import pandas as pd import networkx as nx def calculate_tf(data_path, fault_country): data = pd.read_csv(data_path) G = nx.Graph() for _, row in data.iterrows(): source = row['source_country'] target = row['target_country'] trade_volume = row['trade_volume'] G.add_edge(source, target, weight=trade_volume) gdp_data = data[['source_country', 'gdp_source']].rename(columns={'source_country': 'country', 'gdp_source': 'gdp'}) gdp_data = gdp_data.append(data[['target_country', 'gdp_target']].rename(columns={'target_country': 'country', 'gdp_target': 'gdp'})) gdp_data = gdp_data.groupby('country').first().reset_index() country_gdp = dict(zip(gdp_data['country'], gdp_data['gdp'])) max_export = 0 max_import = 0 for country in set(data['source_country']): export = data[data['source_country'] == country]['trade_volume'].sum() import_ = data[data['target_country'] == country]['trade_volume'].sum() if export > max_export: max_export = export if import_ > max_import: max_import = import_ critical_value = max(max_export / country_gdp[fault_country], max_import / country_gdp[fault_country]) num_countries = len(set(data['source_country'])) num_failed_countries = 0 tf_values = [] for tf in range(1, 100): # 假设 tf 取值范围为 1 到 100,可根据实际情况调整 failed_countries = [] for source in set(data['source_country']): if source!= fault_country: G_copy = G.copy() nodes_to_remove = [] for u, v, data in G_copy.edges(data=True): if source == u: if data['weight'] > tf * critical_value: nodes_to_remove.append(v) elif source == v: if data['weight'] > tf * critical_value: nodes_to_remove.append(u) G_copy.remove_nodes_from(set(nodes_to_remove)) if len(list(nx.connected_components(G_copy))) > 1: failed_countries.append(source) num_failed_countries = len(set(failed_countries)) if num_failed_countries / num_countries >= 0.6: tf_values.append(tf) break if tf_values: return tf_values[0] else: return "No tf value found for the given conditions" data_path = "your_data.csv" # 替换为实际的文件路径 fault_country = "kor" print(calculate_tf(data_path, fault_country)) ``` [2024-10-08 14:26:40 | AI写代码神器 | 658点数解答]