一些常用的python 小技巧记录

python读取.dat文件

columns = ['Fre', 'Ang', 'Cho','Free', 'Suc', 'Sca']
file_name = 'airfoil_self_noise.dat'
with open(file_name) as f:
    dataset = [[float(item) for item in line.split()] for line in f]
dataset = pd.DataFrame(dataset, columns=columns)

2021/1/6

自动建立文件目录

import os
# 程序自动建立给定的文件目录,存在,跳过,否则,建立这个目录
directory = './machine learning'
if os.path.isdir('%s'%directory):
    pass
else:
    #os.mkdir('%s'%directory)
    os.makedirs('%s'%directory)

pyqt5 建立多线程程序,防止GUI出现“未响应”情况

from PyQt5.QtCore import QRunnable, QThreadPool

# 添加线程
class Worker(QRunnable):
    '''
    Worker thread
    '''
    #  在Worker类中添加构造函数,以便于传入参数
    def __init__(self, allTrainingParams, allTrainingHyperParams):
        super().__init__()
        self.allTrainingParams = allTrainingParams
        self.allTrainingHyperParams = allTrainingHyperParams

    #@pyqtSlot()
    # 在下面添加相关执行时间较长的代码,
    def run(self):
        '''
        Your code goes in this function
        '''
        mlFitting = MLImplementation(self.allTrainingParams, self.allTrainingHyperParams)
        mlFitting.fit()


#在实现中的调用
self.threadpool = QThreadPool()
worker = Worker(allTrainingParams, allTrainingHyperParams)
self.threadpool.start(worker)

reference

2021/1/7

执行长时间的后台程序,添加多线程和进度条


import sys
import time

from PySide2 import QtCore
from PySide2.QtCore import Qt
import PySide2.QtWidgets as QtWidgets


class MainWindow(QtWidgets.QMainWindow):
    """Main window, with one button for exporting stuff"""

    def __init__(self, parent=None):
        super().__init__(parent)
        central_widget = QtWidgets.QWidget(self)
        layout = QtWidgets.QHBoxLayout(self)
        button1 = QtWidgets.QPushButton("Tight operation")
        button2 = QtWidgets.QPushButton("Loose operation")
        button1.clicked.connect(self.export_tight_stuff)
        button2.clicked.connect(self.export_loose_stuff)
        layout.addWidget(button1)
        layout.addWidget(button2)
        central_widget.setLayout(layout)
        self.setCentralWidget(central_widget)

    def export_tight_stuff(self):
        """Opens dialog and starts exporting"""
        worker = Worker(self.tight_operation)
        some_window = MyExportDialog(worker, self)
        some_window.exec_()

    def export_loose_stuff(self):
        """Opens dialog and starts exporting"""

        # self.loose_operation 是传入的要执行的长时间的后台应用程序,
        # 使用自己的应用程序时,可以类比这个程序改写
        worker = Worker(self.loose_operation)

        # QDialog 可以锁定应用程序, 并且能够通过进度条显示程序执行的进度1
        some_window = MyExportDialog(worker, self)
        some_window.exec_()

    @staticmethod
    def loose_operation():
        """Something that doesn't take a lot of CPU power"""
        time.sleep(.1)

    @staticmethod
    def tight_operation():
        """Something that takes a lot of CPU power"""
        some_val = 0
        for i in range(1_000_000):
            some_val += 1


class WorkerSignals(QtCore.QObject):
    progress = QtCore.Signal(int)
    finished = QtCore.Signal()


class Worker(QtCore.QRunnable):

    def __init__(self, fn):
        super().__init__()
        self.operation = fn
        self.signals = WorkerSignals()

    def run(self):
        cnt = 0
        while cnt < 100:
            cnt += 1
            # 添加要执行的后台应用函数
            self.operation()
            self.signals.progress.emit(cnt)
        self.signals.finished.emit()


class MyExportDialog(QtWidgets.QDialog):
    """Dialog which does some stuff, and shows it's progress"""

    def __init__(self, worker, parent=None):
        super().__init__(parent, Qt.WindowCloseButtonHint)
        self.setWindowTitle("Exporting...")
        layout = QtWidgets.QHBoxLayout()
        self.progress_bar = QtWidgets.QProgressBar(self)
        layout.addWidget(self.progress_bar)
        self.setLayout(layout)
        worker.signals.progress.connect(self.progress_bar.setValue)
        worker.signals.finished.connect(self.close)
        self.thread_pool = QtCore.QThreadPool()
        self.thread_pool.start(worker)


if __name__ == "__main__":
    app = QtWidgets.QApplication()
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

reference

python .png 转化为.ico

# pip install pillow
from PIL import Image


filename = r'earth.png'
img = Image.open(filename)
img.save('earth.ico',format = 'ICO', sizes=[(128,128)])

pandas DataFrame 修改数据小数点位数


import pandas as pd

format = lambda x:'%.2f' % x
df = pd.read_csv('samples.csv')
df = df.applymap(format)

df.to_csv('resamples.csv')

遍历给定数目的天数

from datetime import date, timedelta

start_date = date(2010, 1, 1)
end_date = date(2010, 12, 27)
delta = timedelta(days=8)
while start_date <= end_date:
    print (start_date.strftime("%Y.%m.%d"))
    start_date += delta

添加遍历数字

["%.2d" % i for i in range(1, 25)]
>>>['01',
 '02',
 '03',
 '04',
 '05',
 '06',
 '07',
 '08',
 '09',
 '10',
 '11',
 '12',
 '13',
 '14',
 '15',
 '16',
 '17',
 '18',
 '19',
 '20',
 '21',
 '22',
 '23',
 '24']
## applying function for pandas
f = lambda x:x**2

data = {'a':[1,2,3,4], 'b':[5,6,7,8]}
df = pd.DataFrame(data)
print(df)
df.apply(f)
df.applymap(f)

Pandas select

# 使用groupby.filter() 过滤数据
a = loc_data.groupby(["row","col"]).filter(lambda x: len(x) == 2)
print(a.shape)
a.to_csv('222.csv')

shutil copy file

file_lists = os.listdir(file_dir)
file_lists = [file for file in file_lists if file.endswith('.hdf')]
for file in file_lists:
     if file[20:23] in v_lists and file[17:20] in h_lists:
     shutil.copy(file_dir + '/%s' % file, file_dir + '/region/%s' % file)
   

commonly used regression metrics

from sklearn.metrics import mean_squared_error, r2_score, mean_absolute_error, mean_absolute_percentage_error
import numpy as np 

def rmse(y_true, y_pred):
    
    return np.sqrt(mean_squared_error(y_true, y_pred))

def rrmse(y_true, y_pred):
    
    return rmse(y_true, y_pred) / np.mean(y_true)

def bias(y_true, y_pred):
    return np.mean(y_pred) - np.mean(y_true)


metrics_dict = {'R2':r2_score,
                'RMSE':rmse,
                'bias':bias,
                 'rRMSE':rrmse,
                 'MAE':mean_absolute_error,
                 'MAPE':mean_absolute_percentage_error}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,640评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,254评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,011评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,755评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,774评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,610评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,352评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,257评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,717评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,894评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,021评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,735评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,354评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,936评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,054评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,224评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,974评论 2 355

推荐阅读更多精彩内容