【发布时间】:2022-01-03 21:23:37
【问题描述】:
我正在用 python 做一些数据分析。我有几个数据点(~300),其中每个点都有自己的全局属性(int 或 float 值)和网格值(即具有 4 列以上的数组)。 为了便于阅读、处理和分析每个点,我创建了一个类如下(这是一个最小示例):
class SimulationPoint:
def __init__(self, path, scalar1, scalar2):
self.scalar1 = scalar1
self.mesh = pd.read_csv(path+'mesh.csv')
def normalize_input(self):
return func1(self.scalar1)
def spot_centers(self, nbr_spots=5):
points_mesh = self.mesh[self.mesh.value >= self.mesh.value.quantile(0.9)].copy()
xyz_mesh = points_mesh.drop(['value'], axis=1).to_numpy()
result = func2(xyz_mesh, n_clusters=nbr_spots)
return result
所以我的问题是,是否有一些简单的方法可以从此类的多个实例中获取统计信息? 例如,绘制直方图或获取基本统计数据(均值、标准差、峰度等...)。
目前我的解决方案是:
# Read data into dict.
path = '../path_to_data/'
full_data = {}
for dp in os.listdir(path):
dp_path = os.path.join(path,dp)
full_data[dp] = SimulationPoint(dp_path)
# Loop over dict values.
for key in full_data.keys() :
x = full_data[key].normalize_input()
我想知道是否有更优雅/有效/(放置有用的词)来做到这一点?
附:我有更多的类的方法/属性,这就是我决定创建它的原因。 顺便说一句,我是 OOP 的新手,请不要犹豫对代码实现进行更广泛的评论。
谢谢!
【问题讨论】:
标签: python pandas numpy class statistics