1. 转载: https://blog.csdn.net/yjk13703623757/article/details/77918633
if __name__ == '__main__'
的意思是:当.py文件被直接运行时,if __name__ == '__main__'
之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'
之下的代码块不被运行。
2. 参考:https://www.cnblogs.com/franknihao/p/7326849.html
import gc
运行函数添加 gc.collect()#将对对循环引用进行回收
3. 转载:https://blog.csdn.net/tanzuozhev/article/details/77090119
参考:https://www.cnblogs.com/gengyi/p/8620853.html
(1)apply_async(func[, args[, kwds[, callback]]])
它是非阻塞的且支持结果返回后进行回调。
from multiprocessing import Process, cpu_count
def f(xxnum):
seed() rand_num = randint(0,10) # 每次都随机生成一个停顿时间
time.sleep(rand_num) return (xxnum, rand_num)
start_time = time.time()
cores = multiprocessing.cpu_count()#返回的是计算机的cpu核心数,比如cpu是双核的,则返回2,如果双四核cpu,则返回8
pool = multiprocessing.Pool(processes=cores)创建拥有cores个进程数量的进程池
pool_list = []
result_list = []
start_time = time.time()
for xx in xrange(10):
pool_list.append(pool.apply_async(f, (xx, ))) # 这里不能 get, 会阻塞进程
result_list = [xx.get() for xx in pool_list]
#在这里不免有人要疑问,为什么不直接在 for 循环中直接 result.get()呢?这是因为pool.apply_async之后的语句都是阻塞执行的,调用 result.get() 会等待上一个任务执行完之后才会分配下一个任务。事实上,获取返回值的过程最好放在进程池回收之后进行,避免阻塞后面的语句。
# 最后我们使用一下语句回收进程池:
pool.close()#关闭进程池,不再接受新的进程
pool.join()#主进程阻塞等待子进程的退出
4. 参考:https://blog.csdn.net/ly_ysys629/article/details/73849543
转载:https://blog.csdn.net/zhouwenyuan1015/article/details/77334889
merge: 合并数据集, 通过left, right确定连接字段,默认是两个数据集相同的字段
参数 说明
1)left 参与合并的左侧DataFrame
2)right 参与合并的右侧DataFrame
3)how 连接方式:‘inner’(默认);还有,‘outer’、‘left’、‘right’
4)on 用于连接的列名,必须同时存在于左右两个DataFrame对象中,如果位指定,则以left和right列名的交集作为连接键
5)left_on 左侧DataFarme中用作连接键的列
6)right_on 右侧DataFarme中用作连接键的列
7)left_index 将左侧的行索引用作其连接键
8)right_index 将右侧的行索引用作其连接键
9)sort 根据连接键对合并后的数据进行排序,默认为True。有时在处理大数据集时,禁用该选项可获得更好的性能
10)suffixes 字符串值元组,用于追加到重叠列名的末尾,默认为(‘_x’,‘_y’).例如,左右两个DataFrame对象都有‘data’,则结果中就会出现‘data_x’,‘data_y’
11)copy 设置为False,可以在某些特殊情况下避免将数据复制到结果数据结构中。默认总是赋值
5. 转载:https://www.cnblogs.com/yufeihlf/p/6179547.html
os.getcwd():查看当前所在路径。
os.listdir(path):列举目录下的所有文件。返回的是列表类型。
os.path.abspath(path):返回path的绝对路径。
os.path.split(path):将路径分解为(文件夹,文件名),返回的是元组类型。可以看出,若路径字符串最后一个字符是\,则只有文件夹部分有值;若路径字符串中均无\,则只有文件名部分有值。若路径字符串有\,且不在最后,则文件夹和文件名均有值。且返回的文件夹的结果不包含\.
os.path.join(path1,path2,...):将path进行组合,若其中有绝对路径,则之前的path将被删除。
os.path.dirname(path):返回path中的文件夹部分,结果不包含'\'
os.path.basename(path):返回path中的文件名。
6.转载:https://blog.csdn.net/kancy110/article/details/75043202
参考:https://blog.csdn.net/sinat_33761963/article/details/53433799
sklearn.preprocessing.LabelEncoder():标准化标签,将标签值统一转换成range(标签值个数-1)范围内
7.pandas的to_csv()使用方法
参考:https://blog.csdn.net/toshibahuai/article/details/79034829
是否保留行索引 index: whether to write row (index) names (default True)
dt.to_csv('C:/Users/think/Desktop/Result1.csv',index=0) #不保存行索引
8.转载:https://www.cnblogs.com/bawu/p/7701810.html
merge、join
1、当没有索引时:merge、join为按照一定条件合并
2、当有索引、并按照索引合并时,得到结果为两者混合到一起了,重新按照一定规则排序了。
3、当没有索引时、concat不管列名,直接加到一起,可以加到后面、也可以加到右边,axis=0为加到后面,axis=1为加到右边,左边的数据结构没有变,变的是右边数据结构。
4、当有索引、并按照索引合并时,得到结果两者混合到一起了。
9.参考:https://blog.csdn.net/qq_24753293/article/details/80692679
df.sorted_values(by=['col1','col2'])
先根据col1排序,然后再根据col1拍完的顺序里,根据col2进行局部排序
10. 对数据进行划分计算,虽然快,但是要注意数据之间的联系,如果是对整体的统计,还是不要数据分割了。
11. 列表转成series存储在文件当中
ipTable=['123.111.111.1','111.111.111.1']
a =pd.Series(ipTable)
a.to_csv('../data/a.csv',index=False)
b = pd.read_csv('../data/a.csv',header=None,squeeze = True)
Out[51]:
0 123.111.111.1
1 111.111.111.1
Name: 0, dtype: object
c = list(b)
Out[53]: ['123.111.111.1', '111.111.111.1']