《小聪明》
目录
1.8、解决dataframe写入csv会出现科学技术法的情况
一、简言
本文主要记录一些工作中记录的一些需求处理方式方法,后续如再遇到可以直接查看。主要涉及python、linux、sql领域一些内容,后续如有其他内容还会新增。
一、python方面
1.1、字符串前补0
str(1).zfill(4)
# 输出:0001
1.2、python安装包镜像网站
https://pypi.tuna.tsinghua.edu.cn/simple
1.3、pip无法卸载包时
pip install --ignore-installed xxx
1.4、dataframe设置全行或全列显示
# 设置全列显示
pd.set_option('display.max_columns',None)
# 设置全行显示
pd.set_option('display.max_rows',None)
1.5、dataframe对某一列特征编码
sex_mapping = {label: idx for idx, label in enumerate(set(df['sex']))}
df['sex'] = df['sex'].map(sex_mapping)
1. 6、dataframe任意位置插入一列值
# res:dataframe对象
# 0:插入的位置,从0开始算起
# c_id.to_frame():插入的也必须是dataframe的一列
res.insert(0,'客户id',c_id.to_frame())
1.7、sklearn算法,输出特征方程
Y = a0 + a1*x1 + a2*x2 + a3*x3 + an*xn + u
model.coef_ 得到[a1,a2,a3,...,an] 变量系数
model.intercept_ 得到β0 截距
1.8、解决dataframe写入csv会出现科学技术法的情况
cust_base_df.replace('\s+','',regex=True,inplace=True)
1.9、dataframe行转列(行列互换)
new_df = crash_result.set_index(['card_no','target_description'])['target_value']
new_df = new_df.unstack().rename_axis(columns=None).reset_index().fillna(0)
1.10、正则找出两个特定字符中间的所有内容
pattern = '(?<=左特定字符).*(?=右特定字符)'
result = re.findall(pattern,l)
print("结果:",result )
1.11、正则匹配字符串中的中文内容
print(re.sub(r'[^\u4e00-\u9fa5]','','ABC中啊啊,。*'))
1.12、正则匹配括号里的内容
# 替换括号里的内容为ccc
print(re.sub('\[.*\]','ccc','aa[b[v]]d'))
# 输出 aacccd
# 找到所有括号里的内容
print(re.findall('\[.*\]','aa[b[v]]d'))
# 输出 ['[b[v]]']
1.13、try捕获具体报错的行数及文件
try:
raise ValueError('手动触发异常')
except Exception as e:
print(e)
print(e.__traceback__.tb_frame.f_globals['__file__'])
print(e.__traceback__.tb_lineno)
1.14、升级pip
python -m pip install -U pip
1.15、ip地址转int类型
import IPy
IPy.IP(x).int()
1.16、ip校验
#ip校验
def check_ip(ipAddr):
compile_ip=re.compile('^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$')
if compile_ip.match(ipAddr):
return True
else:
return False
1.17、特征归一化
train_x=(train_x-np.mean(train_x,axis=0))/(np.std(train_x,axis=0,ddof=1))
1.18、dataframe自动转变类型
# 整体转换
train_x = train_x.apply(pd.to_numeric,errors='ignore')
# 对一列进行类型转变:
train_x['列名']=pd.to_numeric(train_x['列名'])
1.19、机器学习分类问题求精度
h=np.dot(test_X,theta)
y_mean=np.mean(test_Y,axis=0) # 真实值的平均数
u=np.sum((h-test_Y)**2) # 预测值和真实值之间的方差
v=np.sum((test_Y-np.mean(y_mean,0))**2) #真实值和真实值的平均值的方差
score=1-u/v
1.20、忽略警告
import warnings
warnings.filterwarnings('ignore')
1.21、matplotlib图上正常显示中文
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #在图中正确显示中文
plt.rcParams['axes.unicode_minus']=False # 默认是使用Unicode负号,设置正常显示字符,如正常显示负号
1.22、dataframe的merge与concat
new_df = pd.merge(df1,df2,how='outer',left_index=True,right_index=True,sort=False)
df = pd.concat([stand_df, orignial_df], sort=False)
1.23、字符串空白检查与替换
1)判断字符串中是否包含空格
s.isspace()
2)删除字符串中的空白字符
s.strip(rm) # 删除s开头、结尾的rm
s.lstrip(rm) # 删除s开头的rm
s.rstrip(rm) # 删除s结尾的rm
当 rm 为空时,默认删除空白字符,包括:\n,\r,\t
可以使用replace进行替换
1.24、dataframe按某列排序
# 1
df.sort_values(by=['column1'],inplace=True,ascending=False)
# 2
df = df.ix[:, ::-1]
print(df)
二、sql方面
2.1、hive时间格式化
select from_unixtime(unix_timestamp('20231106120814',"yyyyMMddHHmmss"), "yyyy-MM-dd HH:mm:ss")
2.2、hive后台load data入表
-- 1、准备离线txt文档或csv 确保hive表的分隔符为离线文档一样的分隔符,且hive表格式为textfile
-- row format
-- delimited fields
-- terminated by ','
-- LINES TERMINATED BY '\n'
-- STORED AS textfile
-- 2、通过命令进入hive后台交互
-- 3、输入 load data local inpath filePath overwrite into table tableName;
-- 下面为一个案例
hive> load data local inpath '/data/et_base_ip_region_jspoc.csv' overwrite into table jxpoc_dm.et_base_ip_region_jspoc;
Loading data to table jxpoc_dm.et_base_ip_region_jspoc
OK
Time taken: 0.674 seconds
三、linux方面
3.1、linux中python设置后台运行
nohup python run.py > nohup.log 2>&1 &
3.2、linux远程拷贝
scp -r source_path user@host:target_path
scp -r text_clusters/ root@172.30.6.212:/data/ici/
3.3、linux查看文件编码
file --mime-encoding processing_record/project_record.py
3.4、linux打包与解压
# 打包:
tar -czvf name.tgz filePath
# 解压:
tar -zxvf name.tgz
3.5、设置vim打开文件的默认编码格式
echo 'set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936' >> /etc/vimrc
四、其他
因时间有限,本文会陆续更新,逐步精简。