《小聪明》
目录
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 
四、其他
因时间有限,本文会陆续更新,逐步精简。