2018/11/10 今天的问题和新知识

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']

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值