零碎Python代码整理
Pycharm设置Conda环境
https://www.jetbrains.com/help/pycharm/conda-support-creating-conda-virtual-environment.html
Excel表合并
import pandas as pd
import os
path = "路径"
file_list = os.listdir(path)
all_data = pd.DataFrame()
for files in file_list:
try:
file = pd.read_excel(path + '/' + files, header=0, usecols=["公司名称", "关联公司名称", "工作地点", "发布时间"])
print('目前在:', files)
all_data = pd.concat([all_data, file])
except Exception as e:
print(files, "无法打开")
all_data.to_csv("路径")
模糊合并
file_zp['firmname_备'] = file_zp['firmname_备'].apply(lambda x: (difflib.get_close_matches(x, file_gs['firmname'])[:1] or [None])[0])
Df.apply() 与 Series.apply():
- 两者的参数设置是不一样的,Df.apply()可以设定result=(),Series.apply()则不行
手动安装python第三方包的办法
1.从 https://pypi.org/simple/ 下载压缩文件
2.解压缩后在文件夹内打开cmd,运行 python setup.py install
3.如果压缩包内没有setup.py文件,可以创建一个同名文件,内容为:
from setuptools import setup
setup()
再次运行 python setup.py install即可
pip换源
pip3 install pkname -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
利用jieba和thefuzz合并
import pandas as pd
import jieba
from thefuzz import fuzz
# 创建一个包含文本的DataFrame
df = pd.DataFrame({'text': ['我喜欢吃苹果', '他喜欢吃橙子', '她喜欢吃香蕉']})
# 定义一个函数用于分词
def cut_text(text):
seg_list = jieba.cut(text)
return " ".join(seg_list)
# 将分词函数应用到DataFrame的每一行
df['text_cut'] = df['text'].apply(cut_text)
# 定义一个模糊匹配函数
def fuzzy_merge(x, choices, scorer, limit):
return choices[scorer(x, choices, limit=limit).argmax()]
# 创建一个选择列表
choices = ['苹果', '橙子', '香蕉']
# 将分词结果应用到模糊匹配函数,进行合并
df['fruit'] = df['text_cut'].apply(fuzzy_merge, args=(choices, fuzz.token_sort_ratio, 60))
# 输出结果
print(df)
分词与统计
import pandas as pd
import jieba
from collections import Counter
# 创建一个包含文本的DataFrame
df = pd.DataFrame({'text': ['我喜欢吃苹果,也喜欢吃香蕉。', '他喜欢吃橙子,不喜欢吃苹果。']})
# 定义一个函数用于分词并统计词频
def word_count(text):
seg_list = jieba.cut(text)
word_count = Counter(seg_list)
return word_count
# 将函数应用到DataFrame的每一行,生成新的一列
df['word_count'] = df['text'].apply(word_count)
# 合并所有行的词频统计结果
word_count_all = sum(df['word_count'], Counter())
# 输出结果
print(word_count_all)
jieba和thefuzz模糊合并
- thefuzz中的process.extractOne()中query参数必须是字符类型的,因此形如["xxx", "aaa"]这样的list不能直接传入query参数。
- 需要在jieba分词时,返回" ".join(jieba.cut(text)),即将list中的字符以空格拼接起来。
- 这样生成的Series即可使用apply方法调用process.extractOne()函数。
def word_cut(text):
return " ".join(jieba.lcut(text))
file_gs01["cut2"] = file_gs01["firmname_b"].apply(word_cut)
m = file_gs01["cut2"].apply(
lambda x: process.extractOne(
query=x,
choices=file_zp01["cut"],
scorer=fuzz.token_set_ratio))
- note: extractone中需要加入score_cutoff=60,限制匹配度,其次需要用多线程优化apply

浙公网安备 33010602011771号