飞书自动进行认知网络分析以后的简单处理——数据的过滤和转化

发布于:2025-03-21 ⋅ 阅读:(34) ⋅ 点赞:(0)

过滤纯字母-如媒体使用技术

对 ‘’C:\Users\89735\Downloads\编码后excel\编码后excel‘’
文件夹下面所有excel的“媒体使用技术”这一列进行过滤,在原来excel基础上,读取这一列的值

只保留一个 任意个大写或者小写字母组合的值,没有的话清空这个单元格,清楚纯汉字的值,

有多个的话只保留第一个
加一个数字或者两个数字都可以,直接在原来excel修改
import os
import pandas as pd
import re

定义目标文件夹路径

folder_path = r’C:\Users\89735\Downloads\编码后excel’

定义正则表达式,用于匹配字母组合的模式

letter_pattern = re.compile(r’1+ ′ ) c h i n e s e p a t t e r n = r e . c o m p i l e ( r ′ [ 4 ˘ e 00 − 9 ˘ f a 5 ] + ') chinese_pattern = re.compile(r'^[\u4e00-\u9fa5]+ )chinesepattern=re.compile(r[4˘e009˘fa5]+') # 匹配纯汉字

遍历文件夹中的所有文件

for file_name in os.listdir(folder_path):
if file_name.endswith(‘.xlsx’): # 确保只处理Excel文件
file_path = os.path.join(folder_path, file_name)

    # 读取Excel文件
    df = pd.read_excel(file_path)

    # 检查是否存在“数字技术使用”列
    if '数字技术使用' in df.columns:
        # 遍历该列的每个值
        for i in range(len(df)):
            cell_value = df.at[i, '数字技术使用']
            # 检查值是否为字符串,避免处理非字符串类型导致错误
            if isinstance(cell_value, str):
                # 检查是否为纯汉字
                if chinese_pattern.fullmatch(cell_value):
                    df.at[i, '数字技术使用'] = ''
                else:
                    # 使用正则表达式查找所有匹配的字母组合
                    matches = letter_pattern.findall(cell_value)
                    if matches:
                        # 如果有多个匹配,保留第一个
                        df.at[i, '数字技术使用'] = matches[0]
                    else:
                        # 如果没有匹配,清空该单元格
                        df.at[i, '数字技术使用'] = ''
            else:
                # 如果不是字符串,直接清空
                df.at[i, '数字技术使用'] = ''

        # 将修改后的内容保存回原文件
        df.to_excel(file_path, index=False)
        print(f'已处理文件: {file_name}')
    else:
        print(f'文件 {file_name} 中不存在“数字技术使用”列,跳过该文件')

print(‘所有文件处理完成!’)

过滤字母+数字

对 ‘’C:\Users\89735\Downloads\编码后excel\编码后excel‘’
文件夹下面所有excel的“课堂教学行为”这一列进行过滤,在原来excel基础上,读取这一列的值
,只保留一个 字母+数字的值,如“B1”,没有的话清空,有多个的话只保留第一个
加一个数字或者两个数字都可以,直接在原来excel修改

import os
import pandas as pd
import re

# 定义目标文件夹路径
folder_path = r'C:\Users\89735\Downloads\编码后excel\编码后excel'

# 定义正则表达式,用于匹配字母+数字的模式
pattern = re.compile(r'^[A-Za-z]+\d+$')

# 遍历文件夹中的所有文件
for file_name in os.listdir(folder_path):
    if file_name.endswith('.xlsx'):  # 确保只处理Excel文件
        file_path = os.path.join(folder_path, file_name)

        # 读取Excel文件
        df = pd.read_excel(file_path)

        # 检查是否存在“课堂教学行为”列
        if '课堂教学行为' in df.columns:
            # 遍历该列的每个值
            for i in range(len(df)):
                cell_value = df.at[i, '课堂教学行为']
                # 检查值是否为字符串,避免处理非字符串类型导致错误
                if isinstance(cell_value, str):
                    # 使用正则表达式查找所有匹配的值
                    matches = pattern.findall(cell_value)
                    if matches:
                        # 如果有多个匹配,保留第一个
                        df.at[i, '课堂教学行为'] = matches[0]
                    else:
                        # 如果没有匹配,清空该单元格
                        df.at[i, '课堂教学行为'] = ''
                else:
                    # 如果不是字符串,直接清空
                    df.at[i, '课堂教学行为'] = ''

            # 将修改后的内容保存回原文件
            df.to_excel(file_path, index=False)
            print(f'已处理文件: {file_name}')
        else:
            print(f'文件 {file_name} 中不存在“课堂教学行为”列,跳过该文件')

print('所有文件处理完成!')

替换为ENA格式

写个代码把
‘’C:\Users\89735\Downloads\编码后excel‘’
文件夹下面所有excel的“数字技术使用”
这一列所在的数据所有出现过的值,都放在新增的标题上,出现过的值都是一串字母,
出现过的值都要新增一列,
如果每行的值列那个数字能和标题对应的值一致,就填充1,否则都是0
有点类似于把一列转成一个矩阵,出现过就是1,没出现过就是0

import os
import pandas as pd
import shutil

# 定义源文件夹和目标文件夹路径
source_folder = r'C:\Users\89735\Downloads\编码后excel'
destination_folder = r'C:\Users\89735\Downloads\编码后excel_processed'

# 创建目标文件夹(如果不存在)
os.makedirs(destination_folder, exist_ok=True)

# 遍历源文件夹中的所有文件
for file_name in os.listdir(source_folder):
    if file_name.endswith('.xlsx'):  # 确保只处理Excel文件
        source_path = os.path.join(source_folder, file_name)
        destination_path = os.path.join(destination_folder, file_name)

        # 读取Excel文件
        df = pd.read_excel(source_path)

        # 检查是否存在“数字技术使用”列
        if '数字技术使用' in df.columns:
            # 获取“数字技术使用”列的所有唯一值
            unique_values = df['数字技术使用'].dropna().unique()
            unique_values = [value for value in unique_values if pd.notnull(value)]  # 去除空值

            # 为每个唯一值添加新列,并初始化为0
            for value in unique_values:
                df[value] = 0

            # 遍历每一行,根据“数字技术使用”列的值填充对应的新列为1
            for index, row in df.iterrows():
                current_value = row['数字技术使用']
                if pd.notnull(current_value):  # 检查值是否非空
                    if current_value in df.columns:
                        df.at[index, current_value] = 1

            # 将修改后的内容保存到目标文件夹中的新文件
            df.to_excel(destination_path, index=False)
            print(f'已处理文件: {file_name},保存到: {destination_path}')
        else:
            print(f'文件 {file_name} 中不存在“数字技术使用”列,跳过该文件')

print('所有文件处理完成!')

  1. A-Za-z ↩︎


网站公告

今日签到

点亮在社区的每一天
去签到