早晨。最近我一直试图在为机器学习创建大数据表时实施pandas(我试图尽可能地摆脱numpy)。
然而 - 我遇到了一些问题 - 即切片大熊猫日期框架 即 - 我想返回我指定的行并引用并将特定元素与其他数组中的元素进行比较 - 这里是我实现的一些少量代码和一些大纲
import pandas as pd
import csv
import math
import random as nd
import numpy
#create the pandas dataframe from my csv. The Csv is entirely numerical data
#with exception of the first row vector which has column labels
df=pd.read_csv(r"C:\Users\Python\Downloads\Data for Brent - Secondattampatatdfrandomsample.csv")
#I use panda functionality to return a random sample of the data (a subset
#of the array)
df_sample=pd.DataFrame.sample(df,10)
此时我想将每个行向量的第一个元素与原始数据进行比较。具体来说,任何行中的第一个元素都包含一个id号。 如果原始数据框和样本框的元素匹配,则计算具有匹配ID编号的关联列元素的3个月和6个月平均值
我想放弃我很舒服地转移到numpy
并远离pandas
- 但是有一些训练模型方法我在pandas
听到了很多好事(我的训练是事物的数学方面,而不是程序开发)。谢谢你的意见!
编辑:这是数据框中前11个行向量的示例输入(id,year,month,x,y,z) id年月x y z 0 2 2016 2 1130 343.627538 163660.060200 1 2 2016 4 859 913.314513 360633.159400 2 2 2016 5 931 858.548056 93608.190030 3 2 2016 6 489 548.314860 39925.669950 4 2 2016 7 537 684.441725 80270.240060 5 2 2016 8 618 673.887072 124041.560000 6 2 2016 9 1030 644.749493 88975.429980 7 2 2016 10 1001 543.312870 54874.599830 8 2 2016 11 1194 689.053707 79930.230000 9 2 2016 12 673 483.644736 27567.749940 10 2 2017 1 912 657.716386 54590.460070 11 2 2017 2 671 682.007537 52514.580380
这里是如何在给定N个n元组的情况下返回样本数据的方式。我使用原生熊猫函数从近9000个条目中返回10个行向量的随机生成子集
2 2016 1 633 877.9282175 75890.97027
5185 2774 2016 4 184 399.418719 9974.375000
9441 4974 2017 2 239 135.520851 0.000000
5134 2745 2017 2 187 217.220657 7711.333333
8561 4063 2017 1 103 505.714286 18880.000000
3328 2033 2016 11 118 452.152542 7622.000000
3503 2157 2016 3 287 446.668831 8092.588235
5228 2791 2016 2 243 400.166008 12655.250000
9380 4708 2017 2 210 402.690583 5282.352941
1631 1178 2016 10 56 563.716667 16911.500000
2700 1766 2016 1 97 486.764151 6449.625000
答案 0 :(得分:0)
我想解析样本数组中的相应位置,以搜索原始数组中的相同元素,并计算平均值(最终更严格的统计建模)到相关的数值数据
for id in df_sample['id'].unique():
df.groupby('id').mean()[['x', 'y', 'z']].reset_index()
我不确定这是否正是你想要的,但我会仔细研究它是否能给你提供想法。对于示例中的每个唯一id
(我为所有这些实现了它,实现您喜欢的任何检查),我将原始数据框分组为id
(所有带id == 2
的行都被刷了并且根据需要获取结果pandas.GroupBy
对象的平均值(对于每个不在groupby调用中的列,平均对齐的行)。由于这也平均了你的月份和年份,而我认为我关心的是x,y和z,我选择了这些列,然后出于审美目的重置索引。
或者,如果您想要原始id
中每个year
的{{1}}的平均值,则可以
df