code: def _aligned_series(*many_series):
      """
      Return a new list of series containing the data in the input series, but
      with their indices aligned. NaNs will be filled in for missing values.
  
      Parameters
      ----------
      *many_series
          The series to align.
  
      Returns
      -------
      aligned_series : iterable[array-like]
          A new list of series containing the data in the input series, but
          with their indices aligned. NaNs will be filled in for missing values.
  
      """
      head = many_series[0]
      tail = many_series[1:]
      n = len(head)
      if isinstance(head, np.ndarray) and all(
          len(s) == n and isinstance(s, np.ndarray) for s in tail
      ):
          # optimization: ndarrays of the same length are already aligned
          return many_series
  
      # dataframe has no ``itervalues``
      return (
          v
          for _, v in iteritems(
              pd.concat(map(_to_pandas, many_series), axis=1)
          )
      )
  
imports: from __future__ import division
  import math
  import pandas
  import numpy
  from math import pow
  from scipy import stats, optimize
  from six import iteritems
  from sys import float_info
  from .utils import nanmean, nanstd, nanmin, up, down, roll, rolling_window
  from .periods import ANNUALIZATION_FACTORS, APPROX_BDAYS_PER_YEAR
  from .periods import DAILY, WEEKLY, MONTHLY, QUARTERLY, YEARLY
label_desc: Use image node_id 21 for calling a global function with example usage: _aligned_series() and returns: unknown, many_series