《小聪明》

目录

一、简言

一、python方面

        1.1、字符串前补0

        1.2、python安装包镜像网站

        1.3、pip无法卸载包时

        1.4、dataframe设置全行或全列显示

        1.5、dataframe对某一列特征编码

        1. 6、dataframe任意位置插入一列值

        1.7、sklearn算法,输出特征方程

        1.8、解决dataframe写入csv会出现科学技术法的情况

        1.9、dataframe行转列(行列互换)

        1.10、正则找出两个特定字符中间的所有内容

        1.11、正则匹配字符串中的中文内容

        1.12、正则匹配括号里的内容

        1.13、try捕获具体报错的行数及文件

        1.14、升级pip

        1.15、ip地址转int类型

        1.16、ip校验

        1.17、特征归一化

        1.18、dataframe自动转变类型

        1.19、机器学习分类问题求精度

        1.20、忽略警告

        1.21、matplotlib图上正常显示中文

        1.22、dataframe的merge与concat

        1.23、字符串空白检查与替换

        1.24、dataframe按某列排序

二、sql方面

        2.1、hive时间格式化

        2.2、hive后台load data入表

三、linux方面

        3.1、linux中python设置后台运行

        3.2、linux远程拷贝

        3.3、linux查看文件编码

        3.4、linux打包与解压

        3.5、设置vim打开文件的默认编码格式


一、简言

        本文主要记录一些工作中记录的一些需求处理方式方法,后续如再遇到可以直接查看。主要涉及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

        

四、其他

        因时间有限,本文会陆续更新,逐步精简。