You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.9 KiB
55 lines
1.9 KiB
import pandas as pd |
|
from all_arguments import arguments as arguments_dict # Arguments dictionary with sentiment information |
|
|
|
# Step 1: Read the CSV file |
|
df = pd.read_csv('Blad 1-speeches_sep.csv', delimiter=';') |
|
|
|
print(df.head()) |
|
|
|
# Step 2: Extract relevant columns |
|
# Assuming the arguments start from the 5th column onwards |
|
arguments = df.columns[5:] |
|
df_arguments = df.loc[:, ['_key', 'name'] + list(arguments)] |
|
|
|
# Step 3: Create a binary matrix for arguments |
|
# Convert the argument columns to integers |
|
df_arguments.loc[:, arguments] = df_arguments.loc[:, arguments].apply(pd.to_numeric, errors='coerce').fillna(0).astype(int) |
|
|
|
# Step 4: Calculate sentiment scores for each politician |
|
def calculate_sentiment_score(row): |
|
score = 0 |
|
for arg in arguments: |
|
if row[arg] > 0: |
|
sentiment = arguments_dict.get(arg, {}).get('sentiment', 'neutral') |
|
if sentiment == 'positive': |
|
score += 1 |
|
elif sentiment == 'negative': |
|
score -= 1 |
|
return score |
|
|
|
df_arguments['sentiment_score'] = df_arguments.apply(calculate_sentiment_score, axis=1) |
|
|
|
# Step 5: Identify the top 3 most positive and negative politicians |
|
top_3_positive = df_arguments.nlargest(3, 'sentiment_score') |
|
top_3_negative = df_arguments.nsmallest(3, 'sentiment_score') |
|
|
|
# Step 6: Extract arguments used by these politicians |
|
def extract_arguments(df): |
|
result = {} |
|
for _, row in df.iterrows(): |
|
name = row['name'] |
|
used_arguments = [arg for arg in arguments if row[arg] > 0] |
|
result[name] = used_arguments |
|
return result |
|
|
|
positive_arguments = extract_arguments(top_3_positive) |
|
negative_arguments = extract_arguments(top_3_negative) |
|
|
|
# Print the results |
|
print("Top 3 Positive Politicians and their Arguments:") |
|
for name, args in positive_arguments.items(): |
|
print(f"{name}: {args}") |
|
|
|
print("\nTop 3 Negative Politicians and their Arguments:") |
|
for name, args in negative_arguments.items(): |
|
print(f"{name}: {args}") |