使用pandas平均一列的子集

时间:2017-12-17 16:52:35

标签: excel pandas csv python-3.6

我有一个我正在阅读的.csv文件。我只读取其中的选择列,我需要进一步处理这些数据,然后再将其保存到Excel工作表中。我们的想法是对文件夹中的所有文件重复此过程,并使用与原始.csv相同的名称保存工作表。

截至目前,我能够从.csv中读取特定列,并将整个文件写入excel。在保存到excel之前,我还没弄清楚如何进一步处理这些列。进一步处理涉及

  1. 分别对每列平均行18000-20000。
  2. 计算(列值 - 平均值)/平均值
  3. 将这些值保存在具有不同列名的单独列中。
  4. 我的代码如下。需要一些帮助。

    import pandas as pd
    import os
    from pathlib import Path
    
    
    for f in os.listdir():
        file_name, file_ext = os.path.splitext(f) #splitting into file name and extension
    
        if file_ext == '.atf':
            #open the data file and get data only from specific columns.
            df = pd.read_csv(f, header = 9, index_col = 0, usecols = [0,55,59,63,67,71,75,79,83,87,91,95,99,103], encoding = "ISO-8859-1", sep = '\t', dtype = {'YFP.13':str,'YFP.14':str,'YFP.15':str,'YFP.16':str,'YFP.17':str,'YFP.18':str,'YFP.19':str,'YFP.20':str,'YFP.21':str,'YFP.22':str,'YFP.23':str,'YFP.24':str,'YFP.25':str,'Signals=':str}) 
    
            df.to_excel(file_name+'.xlsx',sheet_name=file_name, engine = 'xlsxwriter') #writing into an excel file
    

1 个答案:

答案 0 :(得分:0)

我们假设您的数据框有4列和100行的形状:

{
        test: /\.s?css$/,
        use: ExtractTextPlugin.extract({
            fallback: 'style-loader',
            use: [
                {
                    loader: 'css-loader',
                    options: {
                        modules: true,
                        importLoaders: 1,
                        localIdentName: '[name]__[local]___[hash:base64:5]'
                    }
                },
                {
                  loader: 'postcss-loader',
                  options: {
                    plugins: () => [autoprefixer]
                  }
                },
                'sass-loader'
            ]
        })
    }
  1.   

    分别为每列平均行18000-20000。

  2. 要对子集执行平均,可以根据索引上的不等式定义逻辑掩码,并在所选数据帧上应用平均功能。如果您想稍后使用它们,结果将保存在新的数据框中:

    new ExtractTextPlugin({ filename: '[name].css' }),
    1.   

      计算(列值 - 平均值)/平均值

    2.   

      将这些值保存在具有不同列名的单独列中

    3. 对于最后两个步骤,下面的代码单独说明:

      data = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
      

      最后,您可以导出数据帧"数据"像你之前做的那样以excel格式。