记录一些常用函数
0.目的
对python的使用不多,经常忘记某个函数功能如何实现。之前采用的做法是记录在本地文档上,可是时间久了总忘记放在哪里。以后打算采用博客记录+编号的形式,尽可能记录自己遇到的一些小问题,方便下次使用时自查。先挖一个坑慢慢搬运记录。
1.Python基础
001. 字符串切片
python切片语法:字符串[开始索引:结束索引:步长]
一些例子:
str = '0123456789'
str[0:3] #截取第一位到第三位的字符
str[:] #截取字符串的全部字符
str[6:] #截取第七个字符到结尾
str[:-3] #截取从头开始到倒数第三个字符之前
str[2] #截取第三个字符
str[-1] #截取倒数第一个字符
str[::-1] #创造一个与原字符串顺序相反的字符串
str[-3:-1] #截取倒数第三位与倒数第一位之前的字符
str[-3:] #截取倒数第三位到结尾
str[:-5:-3] #逆序截取
参考:[1] python如何截取字符串后几位.
002. 将numpy导出到数组
需要将python处理的数据(numpy形式)保存到数组,主要是加逗号和空格,方便在C语言中定义数组。可以利用np.savetxt完成。需要注意的是,如果需要保存为行格式,需要设置newline, 否则总是保存为一列数据。(怀疑是默认每个数据保存为一行,设置newline的格式,就可以保存为行格式了)
import numpy as np
data = np.arange(10)
np.savetxt('myfile.txt',data,fmt='%.4f', newline=', ',)
参考:[1] python numpy.savetxt(),np.column_stack保存(多行/列)数据 保存多维数组.
2.Pandas篇
001. 获取最大值最小值的索引
import pandas as pd
import numpy as np
data = pd.DataFrame(np.random.random((3, 3)), columns=list('ABC'), index=list('abc'))
data.idxmax()
data.idxmin()
data['A'].idxmax() # Series 最小值
data[['A']].idxmax() #pandas 最小值索引
在一台电脑上可以运行,另外一台电脑上报错。 解决方案:转化为numpy,使用argmin函数解决
index_min = df.values.argmin() 函数解决
002. 条件删除
row_index=df[ (~df['日期'].str.contains(r'休息',na=True)) & (df['餐补']==0) ].index
df.drop(row_index,inplace=True)
https://www.cnblogs.com/luoditao/p/14943236.html
003. 保存两列数据到csv中;
df= pd.Dataframe(columns=['A', 'B'])
df.loc[:, 'A' ] = 0 #先对索引初始化,否则直接赋值一列,会报错。 第二次踩坑。。
df[ ['A' ] ] = ypred
df[ ['B'] ] = ytrue
#注意,是 df[ ['A' ] ] 而不是 df ['A' ] ,两层括号。 多列赋值不容易犯这个错误,但是单列赋值总是犯错,以为自己忘记了赋值语法
004. Dataframe 转化为matlab结构体;
有时候有pandas 中Dataframe 转化为 matlab中结构体的需求,可以避免导入MATLAB后需要重新命名一大串变量。
a_dict = {col_name : df[col_name].values for col_name in df.columns.values}
## optional if you want to save the index as an array as well:
# a_dict[df.index.name] = df.index.values
scipy.io.savemat('test_struct_to_mat.mat', {'struct':a_dict})
3.Numpy篇
4.Matplotlib篇
001. matlabplotlib 设置x,y轴标签位置
主要调整labelpad参数
plt.xlabel("特征",labelpad=8.5)
f_ax1.set_ylabel('ylabel', fontdict= font1, labelpad= 8.5)
参考: python plt 设置坐标轴标签的位置(离坐标轴的距离)
002 修改legend 图例位置
主要是通过loc 与 bbox_to_anchor 两个参数调节位置,配合起来可能会更好用一些。
例如: loc= ‘upper center’, bbox_to_anchor=(1/5, 3/4, 6/10, 3/5)。其中,5是(x_max-x_min), 4是(y_max-y_min), 1与3分别为相对位置。
ax.legend(handles=[patch], loc='upper left', bbox_to_anchor=(1/5, 1/5, 6/10, 3/5), borderaxespad=0, fontsize=18, edgecolor='yellow'
参考:
1.matplotlib 到底该如何控制legend的位置
2.echarts label固定位置_matplotlib如何控制legend的位置之二
5.Python 包
001 pip 升级包报错
pip install xxx 时报错 ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问。
通常是权限不足问题,考虑增加-- user 。例如修改为 pip install xxx --user
参考来源1.python 升级包报错