DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DADataOperateOfDataFrameWidget.h
1#ifndef DADATAOPERATEOFDATAFRAMEWIDGET_H
2#define DADATAOPERATEOFDATAFRAMEWIDGET_H
3#include <QtWidgets/QWidget>
4#include <QUndoStack>
5#include <optional>
6#include "DAGuiAPI.h"
7#include "DAData.h"
8#include "DADataPyDataFrame.h"
9#include "numpy/DAPyDType.h"
10#include "DADataOperatePageWidget.h"
11namespace Ui
12{
13class DADataOperateOfDataFrameWidget;
14}
15
16namespace DA
17{
18class DADataTableModel;
19class DAAppRibbonArea;
20class DADialogDataframeColumnCastToNumeric;
21class DADialogDataframeColumnCastToDatetime;
22class DADialogDataFrameDataSelect;
23class DADialogDataFrameEvalDatas;
24class DADialogDataFrameQueryDatas;
25class DADialogDataFrameDataSearch;
26class DADialogDataFrameSort;
27class DADialogCreatePivotTable;
28
34{
35 Q_OBJECT
36public:
37 virtual int getDataOperatePageType() const;
38
39public:
40 explicit DADataOperateOfDataFrameWidget(const DAData& d, QWidget* parent = nullptr);
42 // 是否存在data
43 bool haveData() const;
44 // 获取dataframe
45 DAPyDataFrame getDataframe() const;
46 // 获取Data的引用
47 const DAData& data() const;
48 // 创建dataframe的数据描述
49 DAPyDataFrame createDataDescribe();
50 // dataframe表格是否有选中项
51 bool isDataframeTableHaveSelection() const;
52 // 返回选中的列数,列数不会重复
53 QList< int > getSelectedDataframeCoumns(bool ensureInDataframe = true) const;
54 QList< int > getSelectedDataframeRows(bool ensureInDataframe = true) const;
55 // 返回选中的列/行
56 QList< int > getFullySelectedDataframeColumns(bool ensureInDataframe = true) const;
57 QList< int > getFullySelectedDataframeRows(bool ensureInDataframe = true) const;
58
59 QList< QPoint > getSelectedDataframeCells(bool ensureInDataframe = true) const;
60 int getSelectedOneDataframeRow(bool ensureInDataframe = true) const;
61 int getSelectedOneDataframeColumn(bool ensureInDataframe = true) const;
62
63 // 获取选中的序列,如果用户打开一个表格,选中了其中一列,那么将返回那一列pd.Series作为数据,如果用户选中了多列,那么每列作为一个DAData并组成list返回
64 QList< DAData > getSlectedSeries() const;
65 // 刷新表格
66 void refreshTable();
67 // 确保列可见
68 void ensureColumnVisible(const QString& colName, bool selectCol = true);
69public Q_SLOTS:
70 void setDAData(const DA::DAData& d);
71 // 在选中行后面插入行
72 void insertRowAboveBySelect();
73 void insertRowBelowBySelect();
74 void insertRowAt(int row);
75 void insertColumnRightBySelect();
76 void insertColumnLeftBySelect();
77 void insertColumnAt(int col);
78 // 移除选中的行
79 int removeSelectRow();
80 // 移除选择的列
81 int removeSelectColumn();
82 // 设置选中单元格为nan,返回设置成功的个数
83 int removeSelectCell();
84 // 列更名
85 void renameColumns();
86 // 设置选择列的数据类型,发射信号columnTypeChanged
87 bool changeSelectColumnType(const DAPyDType& dt);
88 // 把选择的行转换为数值,带交互
89 void castSelectToNum();
90 void castSelectToDatetime();
91 // 把选择的列转换为索引
92 bool changeSelectColumnToIndex();
93 // 过滤给定条件外的数据
94 bool queryDatas();
95 bool queryDatas(const DAPyDataFrame& df, const QString& exper);
96 // 检索给定的数据
97 bool searchData();
98 QList< QPair< int, int > > searchData(const DAPyDataFrame& df, const QString& exper) const;
99 // 列运算
100 bool evalDatas();
101 bool evalDatas(const DAPyDataFrame& df, const QString& exper);
102 // 过滤给定条件外的数据
103 bool filterByColumn();
104 bool filterByColumn(const DAPyDataFrame& df, double lower = 0.0, double upper = 0.0, const QString& index = QString());
105 // 数据排序
106 bool sortDatas();
107 bool sortDatas(const DAPyDataFrame& df, const QString& by, const bool ascending);
108 // 创建数据透视表
109 DAPyDataFrame createPivotTable();
110 DAPyDataFrame createPivotTable(const DAPyDataFrame& df,
111 const QStringList value = QStringList(),
112 const QStringList index = QStringList(),
113 const QStringList columns = QStringList(),
114 const QString& aggfunc = QStringLiteral("mean"),
115 bool margins = false,
116 const QString& marginsName = QStringLiteral("All"),
117 bool sort = false);
118Q_SIGNALS:
125 void selectTypeChanged(const QList< int >& column, DA::DAPyDType dt);
126private Q_SLOTS:
127 // 表格点击
128 void onTableViewClicked(const QModelIndex& index);
129
130protected:
131 void changeEvent(QEvent* e);
132
133private:
134 Ui::DADataOperateOfDataFrameWidget* ui;
135 DAData mData;
136 DADataTableModel* mModel { nullptr };
137
138 DADialogDataframeColumnCastToNumeric* mDialogCastNumArgs { nullptr };
139 DADialogDataframeColumnCastToDatetime* mDialogCastDatetimeArgs { nullptr };
140 DADialogDataFrameDataSelect* mDialogDataFrameDataSelect { nullptr };
141 DADialogCreatePivotTable* mDialogCreatePivotTable { nullptr };
142 DADialogDataFrameEvalDatas* mDialogDataFrameEvalDatas { nullptr };
143 DADialogDataFrameQueryDatas* mDialogDataFrameQueryDatas { nullptr };
144 DADialogDataFrameDataSearch* mDialogDataFrameDataSearch { nullptr };
145 DADialogDataFrameSort* mDADialogDataFrameSort { nullptr };
146};
147} // end of namespace DA
148#endif // DADATAOPERATEOFDATAFRAMEWIDGET_H
针对DataFrame的操作窗口
Definition DADataOperateOfDataFrameWidget.h:34
void selectTypeChanged(const QList< int > &column, DA::DAPyDType dt)
选中的列或者类型发生了变化
数据操作的基类窗口,所有数据操作页面继承此窗口方便管理
Definition DADataOperatePageWidget.h:12
针对DAData的model
Definition DADataTableModel.h:19
DAAbstractData的封装 可以放入QMap,QHash中,DAData的等于操作相当于创建一个引用
Definition DAData.h:25
针对da_dataframe.da_cast_to_num函数的参数设置对话框
Definition DADialogDataframeColumnCastToNumeric.h:17
对numpy.dtype的封装
Definition DAPyDType.h:37
非模板类的DataFrame
Definition DAPyDataFrame.h:19
序列化类都是带异常的,使用中需要处理异常
Definition AppMainWindow.cpp:44