平时做作业、解决问题的时候会留下一些python的demo,一些基础操作重用率很高。
在这里对这些demo做个小笔记,方便下次调用。不定期更新,如有不对之处恳请指正。
目录:
文件读写
1.Json/List的读写
import json
# 读操作
json_file_path = 'xxx.json'
json_file_path = 'xxx.txt' # txt文件里存list格式
fr = open(json_file_path, "r", encoding='utf-8') # 打开json文件
DetailData = json.load(fr) # DetailData中装有的便是json文件中的内容
fr.close()
# 写操作
fw = open(json_file_path, "w", encoding='utf-8') # 打开json文件
json.dump(DetailData, fw, ensure_ascii=False, indent=4)
fw.close()
2.读文字txt
str=''
fr = open("xxx.txt", "r", encoding='utf-8') # 打开json文件
for line in fr:
str=str+line
fr.close()
print(str)
3.读csv
# csv.reader()方法
import csv
def readCSV_1(filePath):
# filePath:'xxx.csv'
csvfile = open(filePath, 'rt', encoding='gbk')
reader = csv.reader(csvfile) # reader:csv一行一个列表
res_list = list(reader)
return res_list
# csv.DictReader()方法
import csv
def readCSV_2(filePath):
# filePath:'xxx.csv'
csvfile = open(filePath, 'rt', encoding='gbk')
reader=csv.DictReader(csvfile) # reader:保存数据行的Python字典
res_list=[] # 装每行字典的list
for row in reader:
res_list.append(dict(row))
return res_list
4.获得文件夹里每个文件的名称
def getFileList(folder):
# folder:文件夹路径
import os
fileList=os.listdir(folder)
for i in range(len(fileList)):
fileList[i]=folder+'/'+fileList[i]
return fileList
jieba 分词
import jieba
words = jieba.cut("好心人给消防烈士父母买房") # words是一个generator对象
word_list = []
for word in words:
word_list.append(word)
# word_list=['好心人', '给', '消防', '烈士', '父母', '买房']
sklearn库
1.SVM
import numpy as np
from sklearn.svm import SVC
from sklearn.externals import joblib
X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]]) # 训练集
y = np.array([1, 1, 2, 2]) # 训练集对应的分类值。哪两个数字都可以
clf = SVC(C=2.0,gamma='auto') # 创建模型
clf.fit(X,y) # 训练模型
# 测试
test_list = [[-0.8,-1],[-2,-1],[50,1],[49,56],[23,54],[-40,-60],[-69,80]]
print(clf.predict(test_list)) # 输出测试集的预测分类结果--直接测试
# 训练好的模型,存储和使用
# 存储
joblib.dump(clf, 'myClf.pkl')
# 使用
clf3 = joblib.load('myClf.pkl')
print(clf3.predict(test_list)) # 输出对测试集的预测结果的list
2.TF-IDF + Naive Bayes
写的挺好,可以直接运行
Word2Vec
from gensim.models import Word2Vec
from gensim.models import word2vec
model_filePath = 'myModel.model'
sentences = [['computer','human'],
['篮球'],['唱跳','rap']] # 一定要是这种列表套列表的形式
# 训练词向量
model = word2vec.Word2Vec(sentences=sentences, size=100, window=5, min_count=1)
model.save(model_filePath) # 训练出的词向量模型存起来
model = Word2Vec.load(model_filePath) # 加载词向量模型
print(model['computer','篮球']) # 输出词向量生成结果
wordcloud词云
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
from os import path
def make_worldcloud(file_path):
'''
输入装文本的列表,生成词云
:param file_path: 'xxx.txt',文本列表的文档
:return: null
'''
text_from_file_with_apath = open(file_path, 'r', encoding='UTF-8').read() # 读取文本列表
print(text_from_file_with_apath)
wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all=False)
wl_space_split = " ".join(wordlist_after_jieba) # 分词后用空格隔开
print(wl_space_split)
backgroud_image = plt.imread('target_Img.jpg') # 以target_Img.jpg作为背景图片
print('加载图片成功!')
'''设置停用词'''
stopwords = STOPWORDS.copy()
stopwords.add("回复") # 可以加多个屏蔽词
stopwords.add("他们")
stopwords.add("你们")
stopwords.add("我们")
'''设置词云样式'''
wc = WordCloud(
width=1024,
height=768,
background_color='white', # 设置背景颜色
mask=backgroud_image, # 设置背景图片
font_path='WeiRuanYaHei.ttf', # 设置中文字体,若有中文,这句必须添加,否则汉字显示方框
max_words=80, # 设置最大现实的字数
stopwords=stopwords, # 设置停用词
max_font_size=120, # 设置字体最大值
random_state=50, # 设置有多少种随机生成状态,即有多少种配色方案
)
wc.generate_from_text(wl_space_split) # 开始加载文本
img_colors = ImageColorGenerator(backgroud_image)
wc.recolor(color_func=img_colors) # 字体颜色为背景图片的颜色
plt.imshow(wc) # 显示词云图
plt.axis('off') # 是否显示x轴、y轴下标
plt.show() # 显示
d = path.dirname(__file__) # 获得模块所在的路径
wc.to_file(path.join(d, "word_cloud_cn.png"))
print('生成词云成功!')