在Pandas Python中子图多个列

时间:2019-06-12 17:16:41

标签: python pandas dataframe matplotlib subplot

我是Python的新手,正在努力有效地解决这一问题。我阅读了一些示例,但是它们很复杂并且缺乏理解。对于下面的数据框,我希望对每列进行子图绘制,而忽略前两个位置,即Site_ID和Cell_ID:

  • 可用性
  • VoLTE CSSR
  • VoLTE尝试

每个子图(可用性等)将包括“分组的” Site_ID作为图例。每个子图都保存到所需的位置。

样本数据:

import fetch from "node-fetch";

// Get env var values defined in our Netlify site UI
const {api_key, alert_api_url, park_api_url} = process.env;

async function getJson(response) {
  return await response.json();
}

const alertEndpoint = stateName => {
  return new Promise(function(resolve, reject) {
    fetch(`${alert_api_url}${stateName}${api_key}`)
      .then(response => {
        if (!response.ok) { // NOT res.status >= 200 && res.status < 300
          return reject({ statusCode: response.status, body: response.statusText });
        }
        return resolve(getJson(response))
      })
      .catch(err => {
        console.log('alertEndpoint invocation error:', err); // output to netlify function log
        reject({ statusCode: 500, body: err.message });
      })
  });
}

const parkEndpoint = stateName => {
  return new Promise(function(resolve, reject) {
  fetch(`${park_api_url}${stateName}${api_key}`)
    .then(response => {
      if (!response.ok) { // NOT res.status >= 200 && res.status < 300
        return reject({ statusCode: response.status, body: response.statusText });
      }
      return resolve(getJson(response))
    })
    .catch(err => {
      console.log('parkEndpoint invocation error:', err); // output to netlify function log
      reject({ statusCode: 500, body: err.message });
    })
  })
}

exports.handler = function(event, context) {
  const stateName = event.queryStringParameters.stateName;
  return Promise.all([alertEndpoint(stateName), parkEndpoint(stateName)])
    .then(values => {
      const [alertData, parkData] = values;
      const parksWithAlerts = parkData.map(park => {
        park.alertData = alertData.filter(alert => alert.parkCode === park.parkCode);
        return park;
        });
      return {
        statusCode: 200,
        headers: { 'content-type': 'application/json' },
        body: JSON.stringify(parksWithAlerts)
      };
    })
    .catch(error => {
      return error;
    });
};

这是我效率不高的解决方案,鉴于列数超过100,我非常担心。

Date   Site_ID  Cell_ID   Availability  VoLTE CSSR   VoLTE Attempts
22/03/2019  23181   23181B11    100      99.546435  264
03/03/2019  91219   91219A11    100      99.973934  663
17/04/2019  61212   61212A80    100      99.898843  1289
29/04/2019  91219   91219B26    99.907407   100 147
24/03/2019  61212   61212A11    100      99.831425  812
25/04/2019  61212   61212B11    100      99.91107   2677
29/03/2019  91219   91219A26    100      99.980066  1087
05/04/2019  91705   91705C11    100      99.331263  1090
04/04/2019  91219   91219A26    100      99.984588  914
19/03/2019  61212   61212B11    94.21875    99.934376   2318
23/03/2019  23182   23182B11    100      99.47367   195
02/04/2019  91219   91219A26    100      99.980123  958
26/03/2019  23181   23181A11    100      99.48185   543
19/03/2019  61212   61212A11    94.21875    99.777605   1596
18/04/2019  23182   23182B11    100      99.978012  264
26/03/2019  23181   23181C11    100      99.829911  1347
01/03/2019  91219   91219A11    100      99.770661  1499
12/03/2019  91219   91219B11    100      99.832273  1397
19/04/2019  61212   61212B80    100      99.987946  430
12/03/2019  91705   91705C11    100      98.789819  1000

这是我追求的结果。 {{3}}

1 个答案:

答案 0 :(得分:0)

不是最佳解决方案,但是您可以尝试:

    <a onload='myFunction("Hello");'> Test <a>

    <script type="text/javascript">
    function myFunction(value){
    console.log(value);
    }
    </script>

输出:

enter image description here