参考1这篇参数等解释的很详细。
我需要得到序列转换频次的数据
year,month,passengers
1949,January,112
1949,February,118
1949,March,132
1949,April,129
1949,May,121
1949,June,135
1949,July,148
类比他原来的数据集,
我要把我的实验数据,处理成如下这种
1 2 次数
1 3 次数
1 4 次数
。。。。
所以建个列表来存。
需要嵌套列表——参考
我还需要pandas提取指定字符串
python正则提取数字
## 总结
## ^ 匹配字符串的开始。
## $ 匹配字符串的结尾。
## \b 匹配一个单词的边界。
## \d 匹配任意数字。
## \D 匹配任意非数字字符。
## x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符)。
## x* 匹配0次或者多次 x 字符。
## x+ 匹配1次或者多次 x 字符。
## x{n,m} 匹配 x 字符,至少 n 次,至多 m 次。
## (a|b|c) 要么匹配 a,要么匹配 b,要么匹配 c。
## (x) 一般情况下表示一个记忆组 (remembered group)。你可以利用 re.search 函数返回对象的 groups() 函数获取它的值。
## 正则表达式中的点号通常意味着 “匹配任意单字符”
最终我决定用series切片来搞定
选择多个元素
通过 Series
索引的切片来选择多个元素时,切片“[起始值:终止值:步长]”所指定的元素是不包含终止值的元素,如没有指定终止值,则终止值是包含 Series
最后索引的元素。In [15]: se1[0:2]
Out[15]: 0 2
分别统计步长为2,和步长 为 3 的,序列。
再通过series的唯一值出现的次数来统计我的序列。
#返回series,索引就是唯一值,值就是唯一值出现的次数
count = df['编码'].value_counts()
这样 大概思路就明确了,
1 切片获取二元序列片段和三元序列片段
1 2 次数
1 3 次数
1 4 次数
2 用series的方法 直接统计
开整!
import matplotlib.pyplot as plt
from collections import Counter
import pandas as pd
import read_excel
df1=read_excel.df3
#获取先提供列表便于切片用
code = read_excel.get_code(df1)
#print(code)
colum_one=code[0::2]
colum_two=code[1::2]
list=[]
#把所有的二元序列 放到List里面
for val1, val2 in zip(colum_one, colum_two):
# 在这里处理 val1 和 val2 的值
a=val1*10+val2
#print(a)
list.append(a)
#print(list)
s = pd.Series(list)
unique=s.value_counts()
print(unique)
# 遍历并拿到每对索引和数据,赋值给series
s1 = pd.Series()
s2 = pd.Series()
s3 = pd.Series()
#遍历一下序列 合成dataframe
for key,value in unique.items():
tens = key // 10
ones = key % 10
s1 = s1.append(pd.Series(tens))
s2=s2.append(pd.Series(ones))
s3=s3.append(pd.Series(value))
final_df = pd.DataFrame({'编码': s1, '编码类别': s2, '次数': s3})
final_df.to_csv('bbb.csv',index = False)
# -*- coding:utf-8 -*-
import seaborn as sns
import matplotlib.pyplot as plt
import wanwan
# 如果用的是 pandas读取的话,写路径即可
# 如果你用load加载 ,你需要复制整个文件,他会自动寻找 你指定的
#读取csv 用pandas 读取csv
import pandas as pd
data = pd.read_csv('bbb.csv')
#dataframe 获取第一列series
#dataframe 获取第一列series data.iloc[:,0]
def ShowGRAHeatMap(DataFrame):
colormap = plt.cm.hsv
ylabels = DataFrame.columns.values.tolist()
f, ax = plt.subplots(figsize=(15, 15))
ax.set_title('刘老师-教学行为热力图',fontsize=20)
# 设置展示一半,如果不需要注释掉mask即可
df = pd.DataFrame({'前序列': data.iloc[:,0], '后序列': data.iloc[:,1], 'value': data.iloc[:,2]})
with sns.axes_style("white"):
sns.heatmap(
df.pivot_table(index='前序列', columns='后序列', values='value'),
#Pivot_table index 字体大小 columns 字体大小 values 字体大小 annot=True 显示数值 fmt='d' 数值格式
cmap="YlGnBu",
annot=True,
annot_kws={"size": 30},
#这个参数可以不显示 科学计数法
fmt='.20g',
)
plt.xticks(fontsize=30)
plt.yticks(fontsize=30)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()
plt.savefig('liu.png',dpi=600)
ShowGRAHeatMap(data)