生信数据分析高效Python代码
2023-12-14 10:35:38
1. Pandas + glob获取指定目录下的文件列表
import pandas as pd
import glob
data_dir = "/public/data/"
# 获取文件后缀为.txt的文件列表
df_all = pd.concat([pd.read_csv(f, sep='\t') for f in glob.glob(data_dir + '*.txt')])
print(df_all)
2. 使用 enumerate 函数获取索引和值
# A-K 字母列表
letter = [chr(ord('A') + i) for i in range(0, 11)]
# 输出索引和值
for idx, value in enumerate(letter):
print(f"{idx}\t{value}")
3. 使用 zip 函数同时遍历多个列表
# 0-10 数字列表
number = [n for n in range(0, 11)]
# A-K 字母列表
letter = [chr(ord('A') + i) for i in range(0, 11)]
for number, letter in zip(letter, number):
print(f"{letter}: {number}")
# 0: A
# 1: B
# 2: C
# 3: D
# 4: E
# 5: F
# 6: G
# 7: H
# 8: I
# 9: J
# 10: K
4. 内置函数map + filter 过滤数据
number = [n for n in range(0, 11)]
# 获取平方数
squared_numbers = list(map(lambda x: x**2, number)
print(squared_numbers)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 获取偶数
even_numbers = list(filter(lambda x: x % 2 == 0, number))
print(even_numbers)
# [0, 2, 4, 6, 8, 10]
5. 使用concurrent.futures模块实现循环的并发处理,提高计算效率
import concurrent.futures
def square(num):
return num ** 2
with concurrent.futures.ThreadPoolExecutor() as executor:
res = list(executor.map(square, number))
print(res)
6. 使用asyncio模块实现异步处理,提高并发性能
import asyncio
import math
async def sqrt(num):
return math.sqrt(num)
async def calculate():
run_tasks = [sqrt(num) for num in number]
results = await asyncio.gather(*run_tasks)
print(results)
asyncio.run(calculate())
7. 程序运行分析装饰器
import time
def analysis_time(func):
def warpper(*args, **kwargs):
start_time = time.time()
res = func(*args, *kwargs)
end_time = time.time()
print(f"{func.__name__} program run time: {end_time - start_time}s")
return res
return warpper
# 并行计算
import concurrent.futures
def square(num):
return num ** 2
@analysis_time
def calulate(number):
with concurrent.futures.ThreadPoolExecutor() as executor:
res = list(executor.map(square, number))
return res
print(calulate(number))
# calulate program run time: 0.002947568893432617s
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
文章来源:https://blog.csdn.net/LittleComputerRobot/article/details/134800287
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!