目录
词频统计绘图
python实现计数
pandas词频统计并排序
词云绘图
matpoltlib绘图
折线图
柱状图
文件操作
操作函数的方法
访问方式
读写操作
python基础读写txt文件操作
pandas读写excel文件操作
pandas读写 txt/csv 文件操作
数据操作
列表转字典
字典转列表
列表数据去重
列表截取
字符串操作
字符串合并
字符串分割截取
正则检索特殊字符
mysql数据库
动态数据的sql语句
list=[]
dit={}
for i in 迭代对象:
if i not in list:
list.append(i)
dit[f'{i}']=1
else:
dit[f'{i}']+=1
print(dit)
import pandas as pd
all_list = ['a', 'b' , 'a', 'c']
ds = pd.Series(all_list).value_counts()
print(ds[:10])
import matplotlib.pyplot as plt
import wordcloud
all_list = ['w','w','s','w','a','w','x','x','w','w','w','x','x','a','a','a']
strs = ' '.join(all_list)
wordcloud=wordcloud.WordCloud(font_path='simhei.ttf',background_color='black').generate(strs)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
import matplotlib.pyplot as plt
plt.rcParams['font.family']=['SimHei'] # 设置字体
plt.figure(figsize=(7,7)) # 白板大小
month=['1月','2月','3月','4月','5月','6月'] #参数x
telephone=[100,90,105,110,85,120] # 参数y
plt.plot(month,telephone,label='话费',color='y',linestyle=':',marker='v')
# 默认 第一个参数是x 第二个是y
plt.show()
import matplotlib.pyplot as plt
name_list = ['Monday', 'Tuesday', 'Friday', 'Sunday']
num_list = [1.5, 0.6, 7.8, 6]
plt.bar(range(len(num_list)), num_list, tick_label=name_list)
plt.show()
饼状图
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']='SimHei'#设置中文显示
plt.figure(figsize=(6,6))#将画布设定为正方形,则绘制的饼图是正圆
label=['第一','第二','第三']#定义饼图的标签,标签是列表
explode=[0.01,0.01,0.01]#设定各项距离圆心n个半径
#plt.pie(values[-1,3:6],explode=explode,labels=label,autopct='%1.1f%%')#绘制饼图
values=[4,7,9]
plt.pie(values,labels=label)#绘制饼图
plt.title('饼图')#绘制标题
plt.savefig('')#保存图片
plt.show()
方法 | 说明 |
---|---|
open() | 打开文件,返回文件操作对象 |
write() | 执行写入 |
read() | 执行读出,返回读取内容 |
close() | 关闭文件 |
访问方式 | 说明 |
---|---|
r(read) | 以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存在,抛出异常 |
w(write) | 以只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件 |
a | 以追加方式打开文件。如果该文件已存在,文件指针将会放在文件的末尾。如果文件不存在,创建新文件进行写入 |
r+ | 以读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常 |
a+ | 以读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入 |
w+ | 以读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件 |
# 一次性获取所有内容,内容过多会占用大量内存
with open('绝对路径','r',encoding='utf-8') as f:
text=f.read()
f.close()
print(text)
# 逐行获取内容
with open('绝对路径','r',encoding='utf-8') as f:
while True:
# 读取一行内容
text = file.readline()
# 判断是否读到内容
if not text:
break
# 每读取一行的末尾已经有了一个 ''
print(text, end="")
# 写入
with open('绝对路径','w',encoding='utf-8') as f:
f.write(text)
f.close()
import pandas as pd
text = pd.read_excel('excel的绝对路径',sheet_name=xx)
#单sheet无需加sheet_name
text_dit={'列名':[行1内容,行2内容,.....,行n内容]}
data = pd.DataFrame(text_dit) # 转变成可执行对象
data.to_excel('绝对路径,没有目标文件则创建','访问方式',index=None)
#index需要时则可以不写,默认在第一列增加一个行自增序列
# excel表在python内展开格式为 text = {'列1':[行],'列2':[行]}
import pandas as pd
text = pd.read_csv('绝对路径', sep='\t', encoding='utf-8',header=None)
# sep为分隔符
# 如果没有列名则将header=None 否则默认第一行为列名
# text为numpy的矩阵格式。返回的是一个表格。
print(text.values()[][]) # 返回数据表格,不包含列名 可通过逐级索引导出所需内容
print(text.keys()) # 返回列名索引,不包含数据表格
text = pd.DataFrame(text)
text.to_csv('绝对路径', sep='\t', index=False,mode ='a/w',encoding='utf-8')
# 将numpy格式数据写入目标文件中
# 依据元组列表转成字典
list = [(索引,值),(索引,值),(索引,值)]
d1 = dict(list)
print(d1)
# output = {索引:值,索引:值,索引:值}
# 两个等长列表合并成字典
list1 = [索引1,索引2,索引3,索引4]
list2 = [值1,值2,值3,值4]
print(dict(zip(list1,list2)))
# output = {索引1:值1,索引2:值2,索引3:值3,索引4:值4}
# 单独获取索引值组成列表
dit = {'one':1,'two':2}
dit_key_list=[]
for i in dit.keys():
dit_key_list.append(i)
print(dit_key_list)
# output = [one,two]
# 单独获取values值组成列表
dit = {'one':1,'two':2}
dit_values_list=[]
for i in dit.values():
dit_values_list.append(i)
print(dit_values_list)
# output = [1,2]
#同时获取
dit = {'one':1,'two':2}
dit_key_list=[]
dit_values_list=[]
for i in dit.keys():
dit_key_list.append(i)
dit_values_list.append(dit[i])
print(dit_key_list)
print(dit_values_list)
# output = [one,two]
# output = [1,2]
lists = [1,2,3,1,2,3]
lists = list(set(lists))
print(lists)
# output = [1,2,3]
lists = [1,2,3,4,5,6,7,8,9]
lists1 = lists[起始元素索引:终止元素索引:步长]
print(lists1)
#假设 [:5]则
#output =[1, 2, 3, 4, 5]
简单合并
str = '1234'
str1 = 'onetwothreefour'
str2 = str+str1
print(str2)
#output = '1234onetwothreefour'
列表元素合并成字符串
list1=['1','2','3','4','5']
str = '-'.join(list1)
print(str)
# output = '1-2-3-4-5'
字符串依据分隔符分割
str='1-2-3-4-5-6-7'
list = str.split('-',num)
print(list)
# output = ['1', '2', '3', '4', '5', '6', '7']
# num为截取出几个子字符串 如果为2 则
# new output = ['1', '2', '3-4-5-6-7']
字符串按位截取
str = '1-2-3-4-5-6-7-8-9'
str1 =str[起始位置:终止位置:步长]
print(str1)
# 起始位置不写默认从0开始,终止位置不写默认到最后,步长不写默认为1
# 假设[:5]则
#output = '1-2-3'
# 假设[:5:2]则
#output = '123'
import re
# 实战举例:检索出带有特殊字符的字符串,并加上``标识
list_values=[]
if re.search("\W+",str) == None:
list_values.append(str)
else:
content = str
list_values.append(f'`{str}`')
import re
list1 = ['特征1','特征:2','特征3']
list2 = ['值1','值:2','值3']
表名='表名'
# sql标准化
# 用正则检索出所有带有特殊字符的字符串,并规整化
def sql标准化(list_str):
list=[]
for i in list_str:
if re.search("\W+",i) == None:
list.append(i)
else:
content = i
list.append(f'`{i}`')
return list
str1=','.join(sql标准化(list1))
str2=''
for i in sql标准化(list2):
str2+=f' "{i}",'
str2=str2[:-1]
sql = f'INSERT INTO {表名}({str1}) VALUES({str2})'
print(str1)
print(str2)
print(sql)
# output = 特征1,`特征:2`,特征3
# output = "值1", "`值:2`", "值3"
# output = INSERT INTO 表名(特征1,`特征:2`,特征3) VALUES( "值1", "`值:2`", "值3")