1. 以 release
模式執行Python
python -O process_file.py
可以在程式碼中加入以下命令,判斷是否為release模式:
if __debug__:
print("Debug mode")
else:
print("Release mode")
2.使用Cython
下載Cython:
pip install cython
編寫pyx檔案,即要編譯的Python程式碼:
為了後面方便呼叫,你可以把需要執行的函式放到一個函式中,例如我放到了main()函式中
# process_file.pyx
# python -O process_file.py
import pandas as pd
from tqdm import tqdm
def clean_str(input:str)->str:
# u"\u3000": 全形空格
# u"\xa0": #nbsp
# output = input.strip()\
# .replace('"', '')\
# .replace(u"\u3000", "")\
# .replace(u"\xa0", "")\
# .replace("【", "")\
# .replace("】", "")\
# .replace(" ", "")
output = input.strip()\
.replace(u"\u3000", " ")\
.replace(u"\xa0", " ")\
.replace("【", "[")\
.replace("】", "]")
return output
def main():
file_in = "ownthink_v2\ownthink_v2.csv"
file_out = "ownthink_v2\ownthink_v2_cleaned.csv"
file_out_2 = "ownthink_v2\ownthink_v2_cleaned_rfiltered.csv"
chunk_size = 10000
# 逐塊讀取CSV檔案
data_all = pd.read_csv(file_in, chunksize=chunk_size)# 139951300
# 進行資料清洗
lc = 0 # 計數
head_flag = True
for data_chunk in tqdm(data_all, total=13996):
# 刪除含有 NAN 的行 和 空行
data_chunk = data_chunk.dropna()
# column_names_list = data_chunk.columns.tolist()
for index, row in data_chunk.iterrows():
# 實體,屬性,值
entity = row["實體"]
attribution = row["屬性"]
value = row["值"]
if entity == value:
# 過濾掉 實體 和 值 相等的情況(比如 “英雄聯盟 中文名 英雄聯盟”)
data_chunk = data_chunk.drop(index=index, axis="rows")
continue
# line = entity + attribution + value
# if "歧義關係" in line or "歧義權重" in line:
# data_chunk = data_chunk.drop(index=index, axis="rows")
# print(line)
# continue
# 進行清理,並賦值給 data_chunk
row["實體"] = clean_str(entity)
row["屬性"] = clean_str(attribution)
row["值"] = clean_str(value)
lc += 1
# 寫入檔案
# mode = 'a'為追加資料,index為每行的索引序號,header為標題
if head_flag:
data_chunk.to_csv(file_out, mode='w', index=False, header=True, encoding="utf-8")
head_flag = False
else:
data_chunk.to_csv(file_out, mode='a', index=False, header=False, encoding="utf-8")
# if lc > 10000:
# break
print(lc)
編寫setup.py檔案,使得 Cython 可以將我們的 Python 程式碼編譯成 C 程式碼:
# setup.py
from setuptools import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize('process_file.pyx')
)
接著,執行命令:
python setup.py build_ext --inplace
這樣會生成build資料夾,.cpp檔案,.pyd檔案,其中,build資料夾
和 .pyd檔案
是對你有用的;
你可以在Python程式碼中呼叫編譯好的cython檔案:
from process_file import main
main()