刚开始使用xlrd模块去做
安装
pip install xlrd
查阅资料准备采用pandas库,其封装好了xlrd库
data = pd.read_excel(path, sheet_name=0, header=[0])
data.head()
遇到一个错误:
ValueError: Your version of xlrd is 2.0.1. In xlrd >= 2.0, only the xls format is supported. Install
参考https://blog.csdn.net/qq_52684907/article/details/118995579
安装库openpyxl
pip install openpyxl
得到的数据DataFrame是一种表格的形式,可以转化为numpy.array
data = data.values
使用 with
import pandas as pd
import csv
with open(path_csv,"r") as csvfile:
reader=csv.reader(csvfile)
for line in reader:
print(line)
dir ='D:\\files_save\\code\\ANT_process\\data_use';
filelist = []
for i in os.listdir(dir): #遍历整个文件夹
path = os.path.join(dir, i)
if os.path.isfile(path): #判断是否为一个文件,排除文件夹
if os.path.splitext(path)[1]==".xlsx":
filelist.append(i)
Tsub_num=len(filelist)
for sub_num in range(Tsub_num):
sub_name = filelist[sub_num];path = os.path.join(dir, sub_name)
先设置成字典的格式,再放入表格中,行列不符合要求的话直接转置就可。
orient=‘index’ 参数的设置是将空格补充成none,否则会报错
data={'a':a,
'b':b};
df = pd.DataFrame.from_dict(data, orient='index')
df=df.T
print(df)
df.to_excel(path_x)
不考虑中断重新开始的问题
环境是python3.9
根据查到的方案
各种方案
可以使用的库
http = urllib3.PoolManager()
f=open(dataset_file, 'wb');
一直连接不上一直失败找不到原因
打算使用wget ,可用,有个问题是 我需要down的文件名不在url中可见
wget.filename_from_url(uri)
无法获得原本的文件名
查阅得到的解析方法
from urllib.request import urlopen
url = "https://zztop.us/rec/download/6cUsf-r5pjo3GNfGtgSDAv9xIXbzy9vms0iRKq6YNn0m8UHILNlKiMrMWMecDkmKyv5o675Hp1ZrKPF16"
response = urlopen(url)
filename = response.headers.get_filename()
print(filename)
wget中也有函数
wget.filename_from_headers
需要参数header ,如何获得header, 我的查阅都是使用urllib.request,我的环境无法安装urllib,最后获取url的basename作为文件名暂时凑乎。
主要是数据格式 ,官方链接
dataset 是表格的形式 x y 和其他的参数是表格的表头
https://seaborn.pydata.org/generated/seaborn.violinplot.html
seaborn.violinplot(*, x=None, y=None, hue=None, data=None, order=None, hue_order=None, bw='scott', cut=2, scale='area', scale_hue=True, gridsize=100, width=0.8, inner='box', split=False, dodge=True, orient=None, linewidth=None, color=None, palette=None, saturation=0.75, ax=None, **kwargs)
遇到错误:
Neither the `x` nor `y` variable appears to be numeric.
解决
pandas.DataFrame.explode() 将列表列转为独立的单元格,能将值转换为实数而不是字符串
foo = foo.explode('Values')
foo['Values'] = foo['Values'].astype('float')
sns.violinplot(data=foo, x='Names', y='Values')
参考链接
添加链接描述
在函数中我经常遇到会需要某个参数的shape的情况,但是int的输入是没有shape的,想要统一 ,当参数之有一个值的时候经常忘记把参数变成矩阵
例如:
c=np.array([6])
为了简单的统一这个问题,可以对int类型的输入先处理:
if isinstance(channel, int):
channel = np.array([channel])
这样就算是输入是int 也可以有shape 不会报错
首先我们需要明确的就是numpy是不能初始化一个没有空间的空数据的,即使是空数组也要有形状才能被初始化
也就是说c=np.array([])
是会报错的,不像matlab可以设置空矩阵然后通过给空矩阵增加维度,把一系列的矩阵按照循环放到一个新的大矩阵中。
这完成类似的功能
我想了几种大概的解决方案:
n_cycles,A_shape0,A_shape1=2,3,4
B_mat=np.zeros((n_cycles,A_shape0,A_shape1))
for i_cycles in range(n_cycles):
rng= np.random.RandomState(i_cycles )
A_mat= rng.randn(A_shape0,A_shape1)
B_mat=[i_cycles ,:,:]=A_mat
2.已知这一系列的矩阵的大小以及不知道循环的次数 但是一系列的矩阵大小一样
使用list extend的方式连接这些矩阵 但是在最后要进行reshape处理变成三维的矩阵
B_mat=[]
i_cycles =0
while (A condition):
rng= np.random.RandomState(i_cycles )
A_mat= rng.randn(A_shape0,A_shape1)
B_mat.extend(A_mat)
i_cycles =i_cycles +1
B_mat=np.array(B_mat).reshape(A_mat.shape[0],A_mat.shape[1],i_cycles)
n_cycles=5
B_mat=np.empty((n_cycles),dtype=object)
for i_cycles in range(n_cycles):
A_shape0= random.randint(50)
A_shape1= random.randint(50)
rng= np.random.RandomState(i_cycles )
A_mat= rng.randn(A_shape0,A_shape1)
B_mat=[i_cycles]=A_mat