前言
刚开始实习大概一个月,打算记录一下平时在学校用不到但是在公司比较频繁使用的东西
一、python相关模块
1.OS
查看当前路径
import os
os.getcwd()
查看当前路径下的文件
os.listdir()
#在查看某文件是否存在在路径可这样
for f_name in os.listdir(path):
if 'test' in f_name:
print(f_name)
增删改
os.mkdir(file)#创建一个目录文件
os.rmdir(file)#删除一个目录文件(必须是空的)
os.rename(file)#重命名目录名/文件名,若重命名的名字重复则失败
判断
#判断目录/文件是否存在
os.path.exists(path)
#判断是否为目录
os.path.isdir(path)
#判断是否为文件
os.path.isfile(path)
2.数据处理方面
如果数据过多时,且数据的某个字段是分类的,则可以用以下方法。
首先先将处理的手段包装成一个函数,将数据以分类字段用groupby()来组合一下,再通过apply()函数来处理
例:
import pandas as pd
data = pd.DataFrame([[1,2,3,4,'a'],[11,22,33,44,'b'],
[10,20,30,40,'c'],
[10,210,3210,43210,'a'],
[1,2,3,4,'a'],[11,22,33,44,'b']])
data.columns = ['col1','col2','col3','col4','class']
data数据格式
处理数据的函数
def datagro_func(data):
data_list = data.values.tolist()
for i in range(len(data_list)):
data_list[i][0] += 1
data_list[i][1] *= 2
data_list[i][3] /= 2
print(data_list[0])
return data_list
处理方法
data_gro = data.groupby('class')
data_test = data_gro.apply(datagro_func)
pd.DataFrame(data_test[0]+data_test[1]+data_test[2])#注意此处
处理结果
当数据量较小的时候不太适合使用这个方法,但在数据量相对大的时候可以尝试一下,我认为对比for循环来说在时间成本上可能较低(个人看法)。
不过这里有一个方面需要注意:输出的结果的格式问题
由于是先groupby,数据会以分类的字段来进行重新排序,同时如果不加以处理而直接使用pd.DataFrame(data)的话会出现比较大的数据格式问题
pd.DataFrame(data_test)
结果:他列表形式的输出是这样子的:
可以看到列表内部都会根据分类的字段进行整合,所以我会先将列表加起来,后面再进行处理
pd.DataFrame(data_test[0]+data_test[1]+data_test[2])
二、crontab
由于有一些数据是实时的,需要设立一个定时任务来定时下载、处理以及上传到数据库中,所以需要用到这一个
crontab是在linux系统上使用的(或者在windows上也能使用?不过我只在linux上使用)定时任务设定的好用的模块,通过它可以设立一个每天、每小时乃至每分钟的定时任务来运行脚本。
crontab的输入格式为:
minute hour day month week command
minute代表时间,范围在0-59之间
hour代表时间,范围在0-23之间
day代表时间,范围在1-31之间
month代表时间,范围在1-12之间
week代表时间,范围在1-7之间
command代表你即将运行的代码/脚本
例如:
每半小时运行test.sh
*/30 * * * * /home/test.sh
每天的5:20分运行一次test.sh
20 5 * * * /home/test.sh
每个月的星期一至星期五的每天0点,12点运行python脚本test_.py
* 0,12 * * 1-5 python /home/test_.py
总结
由于只是出来实习了一个月左右,现阶段主要还是协助同事处理数据以及探索数据中,所以也没有在对数据更深层面的梳理和建模上有进一步的学习,只学习到了一些看似杂乱但实际上用处颇多的东西,于此记在杂记上。
PS:如果有哪里不对请大神们帮忙提醒以下,谢谢![花花]