def calc_crossovers(sma, lma): num_points = len(clean_data(lma)) #Currently using only closing prices sma = sma['Close'] lma = lma['Close'] high = (sma > lma)[-num_points:] crossovers = high.diff() show(sma, lma, high, crossovers)
def visualize(data, short_period, long_period): sma = data.rolling(short_period).mean() lma = data.rolling(long_period).mean() crossovers = pd.DataFrame(calc_crossovers(sma, lma)) show(data, crossovers) data.plot(color='black') crossovers.plot(kind='scatter', x='index', y='value', color='green') plt.show()
def main(): tickers = 'SPY AAPL MRNA TSLA' data = yf.download(tickers, period='max', group_by='ticker') frame = clean_data(pd.DataFrame(data['TSLA'])) sma = frame.rolling(100).mean() lma = frame.rolling(750).mean() crossovers = calc_crossovers(sma, lma) show(sma, lma, crossovers)
def main(): # coloredlogs.install(level='DEBUG', logger=logger) multiprocessing_logging.install_mp_handler() SEARCH = 'https://www.rockbottomgolf.com/golf-clubs/hybrids/#/?profile_id=7ce0e69e2cb37bcee2e3073332381477&session_id=43e6a6e8-d701-11e9-b23e-0242ac110003&authorized_profile_id=&Searchcat1=Woods&Searchcat2=Hybrids&Gender=Mens&Dexterity=Right&Flex=Regular&sort_by_field=Price+Low+To+High&search_return=all&Searchcondition=Used' #df = single_threaded(SEARCH) df = multi_threaded(SEARCH) pandasgui.show(df)
def main(): tickers = 'SPY AAPL MRNA TSLA' data = yf.download(tickers, period='max', group_by='ticker') dirty = pd.DataFrame(data['TSLA']) frame = clean_data(dirty) sma = frame.rolling(5).mean() lma = frame.rolling(30).mean() crossovers = calc_crossovers(sma, lma) show(dirty, frame)
def calc_crossovers(sma, lma): num_points = len(clean_data(lma)) #Currently using only closing prices sma = sma['Close'] lma = lma['Close'] high = (sma > lma)[-num_points:] crossovers = high.astype(int).diff()[1:] show(crossovers) return crossovers[crossovers != 0]
def main(args): """main""" logger.debug(f"Args: {args}") processor = PROCESSORS[args.process] data = processor(pd.read_csv(args.csv, sep=args.delim), args) if args.filter: data = data.query(args.filter) if args.interactive: show(data) plot(data, args)
def main(): tickers = 'SPY AAPL MRNA TSLA' data = yf.download(tickers, period='max', group_by='ticker') dirty = pd.DataFrame(data['TSLA']) frame = clean_data(dirty) sma = frame.rolling(10).mean() lma = frame.rolling(30).mean() crossovers = calc_crossovers(sma, lma) income = profit(frame['Close'], crossovers) show(frame, sma, lma, crossovers, profit)
def main(): tickers = 'TSLA SPY' data = yf.download(tickers, period='max', group_by='ticker') dirty = pd.DataFrame(data['TSLA']) #Currently using only closing prices frame = clean_data(dirty)['Close'] periods = optimize(frame) print(periods) show(frame)
def show_common_eff_graph(): weights = np.empty((len(f), len(f)), dtype=set) for i in range(len(f)): for j in range(len(f)): weights[i, j] = common_words(f.loc[i, "Effect"], f.loc[j, "Effect"]) graph_df = pd.DataFrame(columns=["S", "T", "W", "C", "E1", "E2"]) graph_df.astype({ "S": str, "T": str, "W": int, "C": str, "E1": str, "E2": str }) c = 0 for i in range(len(f)): for j in range(len(f)): if i < j and len(weights[i, j]) > 0: graph_df.loc[c] = [ f.loc[i, "Card name"], f.loc[j, "Card name"], len(weights[i, j]), ", ".join(weights[i, j]), f.loc[i, "Effect"], f.loc[j, "Effect"] ] c += 1 print(graph_df) graph = nx.from_pandas_edgelist(graph_df, source="S", target="T", edge_attr=True) net = Network(notebook=True, width="100%", height="100%") net.from_nx(graph) for node in net.nodes: try: color = type_to_color[f.loc[f["Card name"] == node["label"]] ["Type"][0]] size = (f.loc[f["Card name"] == node["label"]]["Cost"][0] + 1) * 5 shape = part_to_shape[f.loc[f["Card name"] == node["label"]] ["Part"][0]] node.options.update({"color": color, "size": size, "shape": shape}) except KeyError as e: print(node) net.show("example.html") import webbrowser webbrowser.open("example.html", new=2) show(graph_df)
def run_analysis(periods, data): ''' Objective function for minimization, runs profit calculation with given periods and data Returns negative profit for minimization (maximization of profit) ''' short_period = int(round(periods[0])) long_period = int(round(periods[1])) sma = data.rolling(short_period).mean() lma = data.rolling(long_period).mean() show(sma, lma) crossovers = calc_crossovers(sma, lma) return -1 * profit(data, crossovers)
def visualize(data, short_period, long_period): show(data) sma = data.rolling(short_period).mean() lma = data.rolling(long_period).mean() crossovers = calc_crossovers(sma, lma) buys = pd.DataFrame(crossovers[crossovers == 1.0]) sells = pd.DataFrame(crossovers[crossovers == -1.0]) data.plot(color='black') for buy in buys.index: plt.axvline(buy, color="green") for sell in sells.index: plt.axvline(sell, color="red") plt.show()
def get_ticker(ticker: str): try: df = daily_df(ticker) df = df.rename( columns={ "open": "OPEN", "high": "HIGH", "low": "LOW", "close": "CLOSE", "volume": "VOLUME" }) params = {str(locals()['ticker']): df} show(**params) except: messagebox.showerror("Error!", "Invalid ticker entered!")
def visualize(data, short_period, long_period): sma = data.rolling(short_period).mean() lma = data.rolling(long_period).mean() crossovers = calc_crossovers(sma, lma) buys = pd.DataFrame(crossovers[crossovers == 1.0]) sells = pd.DataFrame(crossovers[crossovers == -1.0]) plot_sells = sells * data plot_buys = buys * data show(plot_sells, plot_buys) # show(data,crossovers) data.plot(color='black') crossovers.plot(kind='scatter', x=crossovers.index, y='Close', color='green') plt.show()
def calc_crossovers(sma, lma): num_points = len(clean_data(lma)) #Currently using only closing prices sma = clean_data(sma['Close'] lma = lma['Close'] #sma corresponds to 0 show(sma, lma, sma > lma) # higher = lma # crossovers = (sma['Low'] - lma['Low']) * (sma['High'] - lma['High']) < 0 # return crossovers.index[crossovers].tolist() # def moving_averages(data): # def kde_h(data, h): if __name__ == "__main__": main()
def reminder(): print('■ how to `sweerviz`:\n\ import sweetviz as sv \n\ my_report = sv.compare([train, "Train"], [test, "Test"], TARGET_COL) \n\ my_report.show_html("OUTPUT_DIR/Report.html")') print('') print('■ how to `pandasgui`:\n\ from pandasgui import show \n\ show(df)')
def get_sell20(): df = top20(data_averaged, 'sell') params = {"Top 20 Sells": df} show(**params)
def manual_parent_selection_helper(): pd.set_option("display.max_rows", None, "display.max_columns", None) pd.set_option('display.width', 1000) pd.set_option('display.max_colwidth', 500) pd.set_option('display.float_format', lambda x: '%.2f' % x) # TODO maybe show market floor price for hit / miss / ok # TODO use card names instead of part names probs = (0.375, 0.09375, 0.03125) while 1: try: with open("breeding_helper_hist.json", "r+") as file: hist = json.load(file) c_imp = hist["c_imp"] c_desi = hist["c_desi"] c_acce = hist["c_acce"] c_parent = hist["c_parent"] c_candidates = hist["c_candidates"] except Exception as e: c_imp = list() c_desi = list() c_acce = list() c_parent = "" c_candidates = list() print( "Input card names split by ';' or type '.' to use previous settings" ) imp, desi, acc = None, None, None while not all([imp, desi, acc]): imp = input(" Relevant parts: ") desi = input("Desireable genes: ") acc = input("Acceptable genes: ") parts = [s.strip().lower() for s in imp.split(",")] + c_imp if desi != "." else c_imp desireable_genes = [s.strip().lower() for s in desi.split(";") ] + c_desi if desi != "." else c_desi acceptable_genes = [s.strip().lower() for s in acc.split(";") ] + c_acce if acc != "." else c_acce parent = None while not parent: parent = input(" Parent ID: ") parent_id = parent if parent != "." else c_parent candidates = input(" Candidate IDs: ") candidate_ids = candidates.split( ) + c_candidates if candidates != "." else c_candidates print(f' Parts: {parts}\n' f'Desireable: {desireable_genes}\n' f'Acceptable: {acceptable_genes}\n' f' Parent: {parent_id}\n' f'Candidates: {candidate_ids}\n') with open("breeding_helper_hist.json", "w+") as file: json.dump( { "c_imp": list(set(parts + c_imp)), "c_desi": list(set(desireable_genes + c_desi)), "c_acce": list(set(acceptable_genes + c_acce)), "c_parent": parent_id, "c_candidates": list(set(candidate_ids + c_candidates)) }, file) parent_genes = get_genes_by_id(parent_id) candidate_data = [(get_genes_by_id(cid), get_axie_price(cid)) for cid in candidate_ids] for i, (g, p) in enumerate(candidate_data): if not p: del candidate_ids[i] candidate_data = [(g, p) for g, p in candidate_data if p] parent_probs = get_part_percentages(parent_genes, desireable_genes, acceptable_genes) results = { cid: { # "genes": candidate_data[i][0], " hit prob": -1, " ok prob": -1, "miss prob": -1, "price": -1, "hit p/price": -1, "ok p/price": -1 } for i, cid in enumerate(candidate_ids) } part_probs = {cid: 0 for cid in candidate_ids} for cid, (c_genes, c_price) in zip(candidate_ids, candidate_data): cand_probs = get_part_percentages(c_genes) breed_probs = { t: { part: parent_probs[i][part] + cand_probs[i][part] for part in parts } for i, t in enumerate(("hit", "ok")) } overall_hit_prob = reduce(lambda x, y: x * y, breed_probs["hit"].values()) overall_acc_prob = reduce(lambda x, y: x * y, [ min(1, breed_probs["hit"][part] + breed_probs["ok"][part]) for part in parts ]) overall_miss_prob = 1 - overall_acc_prob part_probs[cid] = breed_probs results[cid][" hit prob"] = int(overall_hit_prob * 100) results[cid][" ok prob"] = int(overall_acc_prob * 100) results[cid]["miss prob"] = int(overall_miss_prob * 100) results[cid]["price"] = c_price results[cid]["hit p/price"] = int(100 * overall_hit_prob / c_price) results[cid]["ok p/price"] = int(100 * overall_acc_prob / c_price) results[cid]["no hit after 2"] = (1 - overall_hit_prob)**2 results[cid]["no hit after 3"] = (1 - overall_hit_prob)**3 results[cid]["no hit after 4"] = (1 - overall_hit_prob)**4 """for k, v in dict(sorted(results.items(), key=lambda r: r[1]["hit p/price"], reverse=True)).items(): print("Axie", k, f'Worth: {v["hit p/price"]}') pp(v, indent=4)""" df = pd.DataFrame( dict( sorted(results.items(), key=lambda r: r[1]["hit p/price"], reverse=True))) print(df) for i in range(len(candidate_ids)): print("\n", candidate_ids[i]) pp(part_probs[candidate_ids[i]]) for k, v in candidate_data[i][0].items(): if k == "element": print(k, v) else: print("\t", k) print("\t\t", v) show(df.transpose()) action = input("\nType 'reset' to reset settings, 'exit' to exit: ") if action == "exit": print("Exiting ...") exit(0) if action == "reset": print("Deleting history file ...") import os os.remove("breeding_helper_hist.json")
'lvl': lvl, 'price': priceGetter.get_category_jewel_price(a, lvl) } lvlPrice.append(x) a['breakpointPrices'] = lvlPrice for b in comb: if query == 1: min_lvl = b['notableLevel'] else: seq = [x['notableLevel'] for x in b] min_lvl = max(seq) for item in a['breakpointPrices']: if item['lvl'] == min_lvl: jewel_price = item['price'] break notableData = priceGetter.getNotablePrice(a, b, query, inp, jewel_price) if notableData != 0: all_averages.append(notableData) toggle_console(0) df = pd.DataFrame(all_averages) df.drop(['request', 'category_full', 'notable_full', 'id'], axis=1, inplace=True) #gui pg.show(df) except Exception as e: print(e) stop = int(input())
# new_table.validate(self) # File "C:\Users\Johnson\Anaconda2\envs\py39\lib\site-packages\pandas\io\pytables.py", line 3292, in validate # raise ValueError( # ValueError: invalid combination of [values_axes] on appending data [name->values_block_0,cname->values_block_0,dtype->bytes80,kind->string,shape->(2, 3)] vs current table [name->values_block_0,cname->values_block_0,dtype->b'string80',kind->string,shape->None] pandasguisettings = {'block': 'True'} for h5_fname in fname: h5keys = [] with SafeHDFStore(h5_fname) as h5: # import ipdb;ipdb.set_trace() print("name:", h5) h5keys = list(h5.keys()) # th = threading.Thread(target=show(h5.all)) # th.start() for key in h5keys: print("key:", key) h5 = load_hdf_db(h5_fname, table=key, timelimit=False) # show(h5[key],settings=pandasguisettings) show(h5, settings=pandasguisettings) # print(h5['all'].loc['600007']) # h5.remove('high_10_y_20170620_all_15') # print h5 # dd = h5['d_21_y_all'] # print len(set(dd.timel)) # print time.time()- np.mean(list(set(dd.timel))) # Only put inside this block the code which operates on the store # store['result'] = df
def __init__(self): super().__init__() self.tabs = QTabWidget() layout = QVBoxLayout() layout.addWidget(self.tabs) self.setLayout(layout) ######################### # Reusable stuff icon = self.style().standardIcon(QtWidgets.QStyle.SP_VistaShield) scene = QGraphicsScene() scene.addEllipse(10, 10, 100, 100, QtGui.QPen( Qt.black), QtGui.QBrush(Qt.red)) scene.addRect(-10, -10, 50, 50, QtGui.QPen(Qt.black), QtGui.QBrush(Qt.green)) ######################### # Buttons (QRadioButton, QCheckBox, QPushButton, QToolButton, QCommandLinkButton) buttons_layout = QGridLayout() buttons_container = QWidget() buttons_container.setLayout(buttons_layout) self.tabs.addTab(buttons_container, "Buttons") buttons_layout.addWidget(QLabel("Enabled"), 0, 1) buttons_layout.addWidget(QLabel("Disabled"), 0, 2) buttons_layout.setRowStretch(999, 1) row = 1 # QRadioButton (checked) buttons_layout.addWidget(QLabel("QRadioButton (checked)"), row, 0) x = QRadioButton("Lorem Ipsum") x.setEnabled(True) x.setChecked(True) buttons_layout.addWidget(x, row, 1) x = QRadioButton("Lorem Ipsum") x.setEnabled(False) x.setChecked(True) buttons_layout.addWidget(x, row, 2) row += 1 # QRadioButton (unchecked) buttons_layout.addWidget(QLabel("QRadioButton (unchecked)"), row, 0) x = QRadioButton("Lorem Ipsum") x.setEnabled(True) x.setChecked(False) buttons_layout.addWidget(x, row, 1) x = QRadioButton("Lorem Ipsum") x.setEnabled(False) x.setChecked(False) buttons_layout.addWidget(x, row, 2) row += 1 # QCheckBox (checked) buttons_layout.addWidget(QLabel("QCheckBox (checked)"), row, 0) x = QCheckBox("Lorem Ipsum") x.setEnabled(True) x.setChecked(True) buttons_layout.addWidget(x, row, 1) x = QCheckBox("Lorem Ipsum") x.setEnabled(False) x.setChecked(True) buttons_layout.addWidget(x, row, 2) row += 1 # QCheckBox (unchecked) buttons_layout.addWidget(QLabel("QCheckBox (unchecked)"), row, 0) x = QCheckBox("Lorem Ipsum") x.setEnabled(True) x.setChecked(False) buttons_layout.addWidget(x, row, 1) x = QCheckBox("Lorem Ipsum") x.setEnabled(False) x.setChecked(False) buttons_layout.addWidget(x, row, 2) row += 1 # QCheckBox (tristate) buttons_layout.addWidget(QLabel("QCheckBox (tristate)"), row, 0) x = QCheckBox("Lorem Ipsum") x.setEnabled(True) x.setCheckState(Qt.PartiallyChecked) buttons_layout.addWidget(x, row, 1) x = QCheckBox("Lorem Ipsum") x.setEnabled(False) x.setCheckState(Qt.PartiallyChecked) buttons_layout.addWidget(x, row, 2) row += 1 # QPushButton buttons_layout.addWidget(QLabel("QPushButton"), row, 0) x = QPushButton("Lorem Ipsum") x.setEnabled(True) buttons_layout.addWidget(x, row, 1) x = QPushButton("Lorem Ipsum") x.setEnabled(False) buttons_layout.addWidget(x, row, 2) row += 1 # QPushButton (checkable) buttons_layout.addWidget(QLabel("QPushButton (checkable)"), row, 0) x = QPushButton("Lorem Ipsum") x.setEnabled(True) x.setCheckable(True) x.setChecked(True) buttons_layout.addWidget(x, row, 1) x = QPushButton("Lorem Ipsum") x.setEnabled(False) x.setCheckable(True) x.setChecked(True) buttons_layout.addWidget(x, row, 2) ######################### # Controls (QComboBox, QDial, QSlider, QScrollBar) controls_layout = QGridLayout() controls_container = QWidget() controls_container.setLayout(controls_layout) self.tabs.addTab(controls_container, "Controls") controls_layout.addWidget(QLabel("Enabled"), 0, 1) controls_layout.addWidget(QLabel("Disabled"), 0, 2) controls_layout.setRowStretch(999, 1) row = 1 # QComboBox controls_layout.addWidget(QLabel("QComboBox"), row, 0) x = QComboBox() x.setEnabled(True) x.addItem("Lorem Ipsum 1") x.addItem("Lorem Ipsum 2") x.addItem(icon, "Lorem Ipsum 3 (icon)") controls_layout.addWidget(x, row, 1) x = QComboBox() x.setEnabled(False) x.addItem("Lorem Ipsum 1") x.addItem("Lorem Ipsum 2") x.addItem(icon, "Lorem Ipsum 3 (icon)") controls_layout.addWidget(x, row, 2) row += 1 # QComboBox (editable) controls_layout.addWidget(QLabel("QComboBox (editable)"), row, 0) x = QComboBox() x.setEnabled(True) x.setEditable(True) x.addItem("Lorem Ipsum 1") x.addItem("Lorem Ipsum 2") x.addItem(icon, "Lorem Ipsum 3 (icon)") controls_layout.addWidget(x, row, 1) x = QComboBox() x.setEnabled(False) x.setEditable(True) x.addItem("Lorem Ipsum 1") x.addItem("Lorem Ipsum 2") x.addItem(icon, "Lorem Ipsum 3 (icon)") controls_layout.addWidget(x, row, 2) row += 1 # QDial controls_layout.addWidget(QLabel("QDial"), row, 0) x = QDial() x.setEnabled(True) controls_layout.addWidget(x, row, 1) x = QDial() x.setEnabled(False) controls_layout.addWidget(x, row, 2) row += 1 # QSlider (horizontal) controls_layout.addWidget(QLabel("QSlider (horizontal)"), row, 0) x = QSlider() x.setEnabled(True) x.setOrientation(Qt.Horizontal) x.setValue(50) controls_layout.addWidget(x, row, 1) x = QSlider() x.setEnabled(False) x.setOrientation(Qt.Horizontal) x.setValue(50) controls_layout.addWidget(x, row, 2) row += 1 # QSlider (vertical) controls_layout.addWidget(QLabel("QSlider (vertical)"), row, 0) x = QSlider() x.setEnabled(True) x.setOrientation(Qt.Vertical) x.setValue(50) controls_layout.addWidget(x, row, 1) x = QSlider() x.setEnabled(False) x.setOrientation(Qt.Vertical) x.setValue(50) controls_layout.addWidget(x, row, 2) row += 1 # QScrollBar (horizontal) controls_layout.addWidget(QLabel("QScrollBar (horizontal)"), row, 0) x = QScrollBar() x.setEnabled(True) x.setOrientation(Qt.Horizontal) x.setValue(50) controls_layout.addWidget(x, row, 1) x = QScrollBar() x.setEnabled(False) x.setOrientation(Qt.Horizontal) x.setValue(50) controls_layout.addWidget(x, row, 2) row += 1 # QScrollBar (vertical) controls_layout.addWidget(QLabel("QScrollBar (vertical)"), row, 0) x = QScrollBar() x.setEnabled(True) x.setOrientation(Qt.Vertical) x.setValue(50) controls_layout.addWidget(x, row, 1) x = QScrollBar() x.setEnabled(False) x.setOrientation(Qt.Vertical) x.setValue(50) controls_layout.addWidget(x, row, 2) ######################### # Inputs (QLineEdit, QTextEdit, QPlainTextEdit, QSpinBox, QDoubleSpinBox, TimeEdit, DateEdit, TimeDateEdit) inputs_layout = QGridLayout() inputs_container = QWidget() inputs_container.setLayout(inputs_layout) self.tabs.addTab(inputs_container, "Inputs") inputs_layout.addWidget(QLabel("Enabled"), 0, 1) inputs_layout.addWidget(QLabel("Disabled"), 0, 2) inputs_layout.setRowStretch(999, 1) row = 1 # QLineEdit inputs_layout.addWidget(QLabel("QLineEdit"), row, 0) x = QLineEdit("Lorem Ipsum") x.setEnabled(True) inputs_layout.addWidget(x, row, 1) x = QLineEdit("Lorem Ipsum") x.setEnabled(False) inputs_layout.addWidget(x, row, 2) row += 1 # QTextEdit inputs_layout.addWidget(QLabel("QTextEdit"), row, 0) x = QTextEdit("<h3>Lorem Ipsum</h3>") x.setEnabled(True) inputs_layout.addWidget(x, row, 1) x = QTextEdit("<h3>Lorem Ipsum<h3>") x.setEnabled(False) inputs_layout.addWidget(x, row, 2) row += 1 # QPlainTextEdit inputs_layout.addWidget(QLabel("QPlainTextEdit"), row, 0) x = QPlainTextEdit("Lorem Ipsum") x.setEnabled(True) inputs_layout.addWidget(x, row, 1) x = QPlainTextEdit("Lorem Ipsum") x.setEnabled(False) inputs_layout.addWidget(x, row, 2) row += 1 # QSpinBox inputs_layout.addWidget(QLabel("QSpinBox"), row, 0) x = QSpinBox() x.setEnabled(True) inputs_layout.addWidget(x, row, 1) x = QSpinBox() x.setEnabled(False) inputs_layout.addWidget(x, row, 2) row += 1 # QDoubleSpinBox inputs_layout.addWidget(QLabel("QDoubleSpinBox"), row, 0) x = QDoubleSpinBox() x.setEnabled(True) inputs_layout.addWidget(x, row, 1) x = QDoubleSpinBox() x.setEnabled(False) inputs_layout.addWidget(x, row, 2) row += 1 # QTimeEdit inputs_layout.addWidget(QLabel("QTimeEdit"), row, 0) x = QTimeEdit() x.setEnabled(True) inputs_layout.addWidget(x, row, 1) x = QTimeEdit() x.setEnabled(False) inputs_layout.addWidget(x, row, 2) row += 1 # QDateEdit inputs_layout.addWidget(QLabel("QDateEdit"), row, 0) x = QDateEdit() x.setEnabled(True) inputs_layout.addWidget(x, row, 1) x = QDateEdit() x.setEnabled(False) inputs_layout.addWidget(x, row, 2) row += 1 # QDateTimeEdit inputs_layout.addWidget(QLabel("QDateTimeEdit"), row, 0) x = QDateTimeEdit() x.setEnabled(True) inputs_layout.addWidget(x, row, 1) x = QDateTimeEdit() x.setEnabled(False) inputs_layout.addWidget(x, row, 2) ######################### # Displays (QLabel, QTextBrowser, QGraphicsView, QLCDNumber, QProgressBar, QLine) displays_layout = QGridLayout() displays_container = QWidget() displays_container.setLayout(displays_layout) self.tabs.addTab(displays_container, "Displays") displays_layout.addWidget(QLabel("Enabled"), 0, 1) displays_layout.addWidget(QLabel("Disabled"), 0, 2) displays_layout.setRowStretch(999, 1) row = 1 # QLabel displays_layout.addWidget(QLabel("QLabel"), row, 0) x = QLabel("Lorem Ipsum") x.setEnabled(True) displays_layout.addWidget(x, row, 1) x = QLabel("Lorem Ipsum") x.setEnabled(False) displays_layout.addWidget(x, row, 2) row += 1 # QTextBrowser displays_layout.addWidget(QLabel("QTextBrowser"), row, 0) x = QTextBrowser() x.setEnabled(True) x.setFixedHeight(100) x.setHtml("<h3>Lorem Ipsum<h3>") displays_layout.addWidget(x, row, 1) x = QTextBrowser() x.setEnabled(False) x.setFixedHeight(100) x.setHtml("<h3>Lorem Ipsum<h3>") displays_layout.addWidget(x, row, 2) row += 1 # QGraphicsView displays_layout.addWidget(QLabel("QGraphicsView"), row, 0) x = QGraphicsView() x.setEnabled(True) x.setFixedHeight(100) x.setScene(scene) displays_layout.addWidget(x, row, 1) x = QGraphicsView() x.setEnabled(False) x.setFixedHeight(100) x.setScene(scene) displays_layout.addWidget(x, row, 2) row += 1 # QLCDNumber displays_layout.addWidget(QLabel("QLCDNumber"), row, 0) x = QLCDNumber() x.setEnabled(True) x.display(12345.6789) displays_layout.addWidget(x, row, 1) x = QLCDNumber() x.setEnabled(False) x.display(12345.6789) displays_layout.addWidget(x, row, 2) row += 1 # QProgressBar displays_layout.addWidget(QLabel("QProgressBar"), row, 0) x = QProgressBar() x.setEnabled(True) x.setValue(50) displays_layout.addWidget(x, row, 1) x = QProgressBar() x.setEnabled(False) x.setValue(50) displays_layout.addWidget(x, row, 2) row += 1 # QCalendarWidget displays_layout.addWidget(QLabel("QCalendarWidget"), row, 0) x = QCalendarWidget() x.setEnabled(True) displays_layout.addWidget(x, row, 1) x = QCalendarWidget() x.setEnabled(False) displays_layout.addWidget(x, row, 2) ######################### # Containers containers_layout = QGridLayout() containers_container = QWidget() containers_container.setLayout(containers_layout) self.tabs.addTab(containers_container, "Containers") containers_layout.addWidget(QLabel("Enabled"), 0, 1) containers_layout.addWidget(QLabel("Disabled"), 0, 2) containers_layout.setRowStretch(999, 1) row = 1 # QScrollArea containers_layout.addWidget(QLabel("QScrollArea"), row, 0) x = QScrollArea() x.setEnabled(True) x.setFixedSize(250, 150) x.setWidget(QLabel(("Lorem Ipsum " * 5 + "\n") * 20)) containers_layout.addWidget(x, row, 1) x = QScrollArea() x.setEnabled(False) x.setFixedSize(250, 150) x.setWidget(QLabel(("Lorem Ipsum " * 5 + "\n") * 20)) containers_layout.addWidget(x, row, 2) row += 1 # QFrame containers_layout.addWidget(QLabel("QFrame"), row, 0) x = QLabel("Lorem Ipsum") x.setEnabled(True) x.setGeometry(QtCore.QRect(89, 403, 194, 40)) x.setFrameShape(QtWidgets.QFrame.StyledPanel) x.setFrameShadow(QtWidgets.QFrame.Raised) containers_layout.addWidget(x, row, 1) x = QLabel("Lorem Ipsum") x.setEnabled(False) x.setFrameShape(QtWidgets.QFrame.StyledPanel) x.setFrameShadow(QtWidgets.QFrame.Raised) containers_layout.addWidget(x, row, 2) row += 1 # QGroupBox containers_layout.addWidget(QLabel("QGroupBox"), row, 0) x = QGroupBox() x.setEnabled(True) l = QVBoxLayout() l.addWidget(QLabel("Lorem Ipsum")) x.setLayout(l) x.setTitle("Lorem Ipsum") containers_layout.addWidget(x, row, 1) x = QGroupBox() x.setEnabled(False) l = QVBoxLayout() l.addWidget(QLabel("Lorem Ipsum")) x.setLayout(l) x.setTitle("Lorem Ipsum") containers_layout.addWidget(x, row, 2) row += 1 # QToolBox containers_layout.addWidget(QLabel("QToolBox"), row, 0) x = QToolBox() x.setEnabled(True) x.addItem(QLabel("Lorem Ipsum 1"), "Lorem Ipsum 1") x.addItem(QLabel("Lorem Ipsum 2"), "Lorem Ipsum 2") x.addItem(QLabel("Lorem Ipsum 3 (icon)"), icon, "Lorem Ipsum 3") containers_layout.addWidget(x, row, 1) x = QToolBox() x.setEnabled(False) x.addItem(QLabel("Lorem Ipsum 1"), "Lorem Ipsum 1") x.addItem(QLabel("Lorem Ipsum 2"), "Lorem Ipsum 2") x.addItem(QLabel("Lorem Ipsum 3"), icon, "Lorem Ipsum 3 (icon)") containers_layout.addWidget(x, row, 2) row += 1 # QSplitter containers_layout.addWidget(QLabel("QSplitter"), row, 0) x = QSplitter() x.setEnabled(True) x.addWidget(QLabel("Lorem Ipsum 1")) x.addWidget(QLabel("Lorem Ipsum 2")) x.setFixedHeight(50) containers_layout.addWidget(x, row, 1) x = QSplitter() x.setEnabled(False) x.addWidget(QLabel("Lorem Ipsum 1")) x.addWidget(QLabel("Lorem Ipsum 2")) x.setFixedHeight(50) containers_layout.addWidget(x, row, 2) row += 1 # QStackedWidget containers_layout.addWidget(QLabel("QStackedWidget"), row, 0) x = QStackedWidget() x.setEnabled(True) x.addWidget(QLabel("Lorem Ipsum 1")) x.addWidget(QLabel("Lorem Ipsum 2")) containers_layout.addWidget(x, row, 1) x = QStackedWidget() x.setEnabled(False) x.addWidget(QLabel("Lorem Ipsum 1")) x.addWidget(QLabel("Lorem Ipsum 2")) containers_layout.addWidget(x, row, 2) row += 1 # QWidget containers_layout.addWidget(QLabel("QWidget"), row, 0) x = QWidget() x.setEnabled(True) QLabel("Lorem Ipsum", x) containers_layout.addWidget(x, row, 1) x = QWidget() x.setEnabled(False) QLabel("Lorem Ipsum", x) containers_layout.addWidget(x, row, 2) ######################### # Tabs (QTabWidget) tabs_layout = QGridLayout() tabs_container = QWidget() tabs_container.setLayout(tabs_layout) self.tabs.addTab(tabs_container, "Tabs") tabs_layout.addWidget(QLabel("Enabled"), 0, 1) tabs_layout.addWidget(QLabel("Disabled"), 0, 2) tabs_layout.setRowStretch(999, 1) row = 1 # QTabWidget (North) tabs_layout.addWidget(QLabel("QTabWidget (North)"), row, 0) x = QTabWidget() x.setEnabled(True) x.setTabsClosable(True) x.setTabPosition(QTabWidget.TabPosition.North) x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 1") x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 2") tabs_layout.addWidget(x, row, 1) x = QTabWidget() x.setEnabled(False) x.setTabsClosable(True) x.setTabPosition(QTabWidget.TabPosition.North) x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 1") x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 2") tabs_layout.addWidget(x, row, 2) row += 1 # QTabWidget (West) tabs_layout.addWidget(QLabel("QTabWidget (West)"), row, 0) x = QTabWidget() x.setEnabled(True) x.setTabsClosable(True) x.setTabPosition(QTabWidget.TabPosition.West) x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 1") x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 2") tabs_layout.addWidget(x, row, 1) x = QTabWidget() x.setEnabled(False) x.setTabsClosable(True) x.setTabPosition(QTabWidget.TabPosition.West) x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 1") x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 2") tabs_layout.addWidget(x, row, 2) row += 1 # QTabWidget (South) tabs_layout.addWidget(QLabel("QTabWidget (South)"), row, 0) x = QTabWidget() x.setEnabled(True) x.setTabsClosable(True) x.setTabPosition(QTabWidget.TabPosition.South) x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 1") x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 2") tabs_layout.addWidget(x, row, 1) x = QTabWidget() x.setEnabled(False) x.setTabsClosable(True) x.setTabPosition(QTabWidget.TabPosition.South) x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 1") x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 2") tabs_layout.addWidget(x, row, 2) row += 1 # QTabWidget (East) tabs_layout.addWidget(QLabel("QTabWidget (East)"), row, 0) x = QTabWidget() x.setEnabled(True) x.setTabsClosable(True) x.setTabPosition(QTabWidget.TabPosition.East) x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 1") x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 2") tabs_layout.addWidget(x, row, 1) x = QTabWidget() x.setEnabled(False) x.setTabsClosable(True) x.setTabPosition(QTabWidget.TabPosition.East) x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 1") x.addTab(QLabel(("Lorem Ipsum " * 2 + "\n") * 4), "Tab 2") tabs_layout.addWidget(x, row, 2) ######################### # Widgets (QTreeWidget, QListWidget, QTableWidget) widgets_layout = QGridLayout() widgets_container = QWidget() widgets_container.setLayout(widgets_layout) self.tabs.addTab(widgets_container, "Widgets") widgets_layout.addWidget(QLabel("Enabled"), 0, 1) widgets_layout.addWidget(QLabel("Disabled"), 0, 2) widgets_layout.setRowStretch(999, 1) row = 1 # QTableWidget widgets_layout.addWidget(QLabel("QTableWidget"), row, 0) x = QTableWidget() x.setAlternatingRowColors(True) x.setEnabled(True) x.setSortingEnabled(True) x.setRowCount(20) x.setColumnCount(20) for tr in range(20): for tc in range(20): x.setItem(tr, tc, QTableWidgetItem(f"Item-{tr}-{tc}")) item = QTableWidgetItem("Checkable") item.setCheckState(Qt.Checked) x.setItem(0, 0, item) widgets_layout.addWidget(x, row, 1) x = QTableWidget() x.setAlternatingRowColors(True) x.setEnabled(False) x.setSortingEnabled(True) x.setRowCount(20) x.setColumnCount(20) for tr in range(20): for tc in range(20): x.setItem(tr, tc, QTableWidgetItem(f"Item-{tr}-{tc}")) item = QTableWidgetItem("Checkable") item.setCheckState(Qt.Checked) x.setItem(0, 0, item) widgets_layout.addWidget(x, row, 2) row += 1 # QTreeWidget widgets_layout.addWidget(QLabel("QTreeWidget"), row, 0) x = QTreeWidget() x.setEnabled(True) x.setHeaderLabels(['1', '2']) for a in range(10): item = QTreeWidgetItem(x, [f"Col1 Item-{a}", f"Col2 Item-{a}"]) for b in range(5): QTreeWidgetItem( item, [f"Col1 Item-{a}-{b}", f"Col2 Item-{a}-{b}"]) x.itemAt(0, 0).setCheckState(0, Qt.Checked) widgets_layout.addWidget(x, row, 1) x = QTreeWidget() x.setEnabled(False) x.setHeaderLabels(['1', '2']) for a in range(10): item = QTreeWidgetItem(x, [f"Col1 Item-{a}", f"Col2 Item-{a}"]) for b in range(5): QTreeWidgetItem( item, [f"Col1 Item-{a}-{b}", f"Col2 Item-{a}-{b}"]) x.itemAt(0, 0).setCheckState(0, Qt.Checked) widgets_layout.addWidget(x, row, 2) row += 1 # QListWidget widgets_layout.addWidget(QLabel("QTreeWidget"), row, 0) x = QListWidget() x.setEnabled(True) for a in range(10): x.addItem(f"Item-{a}") x.itemAt(0, 0).setCheckState(Qt.Checked) for index in range(x.count()): item = x.item(index) item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable) widgets_layout.addWidget(x, row, 1) x = QListWidget() x.setEnabled(False) for a in range(10): x.addItem(f"Item-{a}") x.itemAt(0, 0).setCheckState(Qt.Checked) widgets_layout.addWidget(x, row, 2) ######################### # Main Window container = QWidget() layout = QVBoxLayout() container.setLayout(layout) main_window = QMainWindow() main_window.setCentralWidget(container) self.tabs.addTab(main_window, "Main Window") # QStatusBar status_bar = QStatusBar() status_bar.setEnabled(True) status_bar.setToolTip("Status bar tooltip") main_window.setStatusBar(status_bar) # QToolTip x = QPushButton("Hover Me") x.setEnabled(True) x.setStatusTip("This is text set by .setStatusTip") x.setToolTip("This is text set by .setToolTip") layout.addWidget(x) # QMenu / QMenuBar menu: QMenuBar = main_window.menuBar().addMenu('&Menu') disabled_menu: QMenuBar = main_window.menuBar().addMenu('&Disabled Menu') disabled_menu.setEnabled(False) action1 = menu.addAction("Action1") action2 = menu.addAction("Action2") action3 = menu.addAction(icon, "Action3 (icon)") menu.addSeparator() submenu = menu.addMenu("Submenu") subaction4 = submenu.addAction("Submenu Action 1") subaction5 = submenu.addAction("Submenu Action 2") subaction6 = submenu.addAction("Submenu Action 3") menu.addSection("Advanced") action4 = QAction("Action4 (checkable)", menu, checkable=True) menu.addAction(action4) action5 = QAction("Action5 (checkable)", menu, checkable=True) menu.addAction(action5) action5.setChecked(True) # QToolBar toolbar = QToolBar() toolbar.addAction(action1) toolbar.addAction(action2) toolbar.addAction(action3) toolbar.addAction(action4) toolbar.addAction(action5) main_window.addToolBar(toolbar) # QToolButton # QSizeGrip # QDockWidget (North tabs) main_window.dock1 = QtWidgets.QDockWidget("One") main_window.dock2 = QtWidgets.QDockWidget("Two") main_window.dock3 = QtWidgets.QDockWidget("Three") main_window.content1 = QtWidgets.QWidget() main_window.content1.setStyleSheet("background-color:#330000;") main_window.content1.setMinimumSize(QtCore.QSize(50, 50)) main_window.content2 = QtWidgets.QWidget() main_window.content2.setStyleSheet("background-color:#770000;") main_window.content2.setMinimumSize(QtCore.QSize(50, 50)) main_window.content3 = QtWidgets.QWidget() main_window.content3.setStyleSheet("background-color:#AA0000;") main_window.content3.setMinimumSize(QtCore.QSize(50, 50)) main_window.dock1.setWidget(main_window.content1) main_window.dock2.setWidget(main_window.content2) main_window.dock3.setWidget(main_window.content3) main_window.addDockWidget(Qt.RightDockWidgetArea, main_window.dock1) main_window.tabifyDockWidget(main_window.dock1, main_window.dock2) main_window.addDockWidget(Qt.RightDockWidgetArea, main_window.dock3) main_window.setDockOptions( main_window.GroupedDragging | main_window.AllowTabbedDocks | main_window.AllowNestedDocks) main_window.setTabPosition( Qt.AllDockWidgetAreas, QtWidgets.QTabWidget.North) # QDockWidget (South tabs) main_window.south_dock1 = QtWidgets.QDockWidget("One") main_window.south_dock2 = QtWidgets.QDockWidget("Two") main_window.south_dock3 = QtWidgets.QDockWidget("Three") main_window.south_content1 = QtWidgets.QWidget() main_window.south_content1.setStyleSheet("background-color:#003300;") main_window.south_content1.setMinimumSize(QtCore.QSize(50, 50)) main_window.south_content2 = QtWidgets.QWidget() main_window.south_content2.setStyleSheet("background-color:#007700;") main_window.south_content2.setMinimumSize(QtCore.QSize(50, 50)) main_window.south_content3 = QtWidgets.QWidget() main_window.south_content3.setStyleSheet("background-color:#00AA00;") main_window.south_content3.setMinimumSize(QtCore.QSize(50, 50)) main_window.south_dock1.setWidget(main_window.south_content1) main_window.south_dock2.setWidget(main_window.south_content2) main_window.south_dock3.setWidget(main_window.south_content3) main_window.addDockWidget( Qt.BottomDockWidgetArea, main_window.south_dock1) main_window.tabifyDockWidget( main_window.south_dock1, main_window.south_dock2) main_window.addDockWidget( Qt.BottomDockWidgetArea, main_window.south_dock3) main_window.setDockOptions( main_window.GroupedDragging | main_window.AllowTabbedDocks | main_window.AllowNestedDocks) main_window.setTabPosition( Qt.BottomDockWidgetArea, QtWidgets.QTabWidget.South) ######################### # Modals # QMessageBox # QDialog # QDialogButtonBox ######################### # Temp try: self.gui = show(pokemon, mi_manufacturing, settings={ 'block': False, 'theme': 'classic'}) self.tabs.addTab(self.gui, "PandasGUI") except: pass
def pandas_gui(data): show(data)
def main(): tickers = 'SPY AAPL MRNA' data = yf.download(tickers, period='max', group_by='ticker') frame = clean_data(pd.DataFrame(data['SPY'])) averages = frame.rolling(4).mean() show(frame, averages)
from pandasgui import show import numpy as np import pandas as pd # Example 1 - Basic usage df = pd.DataFrame(np.random.rand(5, 5), columns=['col1', 'col2', 'col3', 'col4', 'col5'], index=['A', 'B', 'C', 'D', 'E']) show(df) # Example 2 - Multiple DataFrames from pandasgui.datasets import pokemon, titanic, mpg show(pokemon, titanic, mileage=mpg) # Example 3 - Multiple DataFrames with dictionary unpacking from pandasgui.datasets import pokemon, titanic, mpg df_dict = {"pokemon": pokemon, "titanic": titanic, "mileage": mpg} show(**df_dict)
def display_datatable(): data = pd.read_csv('../../results/results.csv') #print(data) df = pd.DataFrame(data) show(df)
import pandas as pd #导入pandas可视化库 from pandasgui import show df = pd.read_excel('mydata.xlsx') show(df, settings={'block': True})
def show_df(df): show(df)
def get_indicators(ticker: str): df = indicator_data(ticker) params = {str(locals()['ticker']): df} show(**params)
return flat_index if __name__ == '__main__': #### EXAMPLES #### from pandasgui import show X = False # I'm just using "if X:" instead of "if False:" so my IDE doesn't complain about unreachable code #### flatten_multiindex #### if 1: arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'], ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']] tuples = list(zip(*arrays)) index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) s = pd.Series(np.random.randn(8), index=index) show(s, nonblocking=True) s.index = flatten_multiindex(s.index) show(s) #### pivot #### if X: pass if X: df = pd.read_csv('sample_data/pokemon.csv') keys = ['Generation'] categories = ['Type 1', 'Type 2'] data = {'Attack': ['min', 'max'], 'Defense': ['mean']} # data = {'Attack': ['mean']} grouped = df.groupby(keys + categories) aggregated = grouped.agg(data)
def get_buy20(): df = top20(data_averaged) params = {"Top 20 Buys": df} show(**params)