Repository: modin-project/modin

Issue:
AttributeError: 'PandasQueryCompiler' object has no attribute 'series_corr'
Repr:
```python
import modin.pandas as pd
pd.Series([1,2,3,4]).corr(pd.Series([2,3,4,5]), method="kendall")
```

Traceback:
```python
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\projects\modin\modin\logging\logger_decorator.py", line 125, in run_and_log
    return obj(*args, **kwargs)
  File "C:\projects\modin\modin\pandas\series.py", line 827, in corr
    query_compiler=self._query_compiler.series_corr(other, method, min_periods)
AttributeError: 'PandasQueryCompiler' object has no attribute 'series_corr'
```


Discussion:

Patch:
diff --git a/modin/core/dataframe/algebra/default2pandas/default.py b/modin/core/dataframe/algebra/default2pandas/default.py
--- a/modin/core/dataframe/algebra/default2pandas/default.py
+++ b/modin/core/dataframe/algebra/default2pandas/default.py
@@ -127,6 +127,7 @@ def applyier(df, *args, **kwargs):
                 and func not in ("divmod", pandas.Series.divmod)
                 and func not in ("rdivmod", pandas.Series.rdivmod)
                 and func not in ("to_list", pandas.Series.to_list)
+                and func not in ("corr", pandas.Series.corr)
                 and func not in ("to_dict", pandas.Series.to_dict)
                 and func not in ("mean", pandas.DataFrame.mean)
                 and func not in ("median", pandas.DataFrame.median)
diff --git a/modin/core/storage_formats/base/query_compiler.py b/modin/core/storage_formats/base/query_compiler.py
--- a/modin/core/storage_formats/base/query_compiler.py
+++ b/modin/core/storage_formats/base/query_compiler.py
@@ -698,6 +698,21 @@ def corr(self, **kwargs):  # noqa: PR02
         """
         return DataFrameDefault.register(pandas.DataFrame.corr)(self, **kwargs)
 
+    @doc_utils.add_refer_to("Series.corr")
+    def series_corr(self, **kwargs):  # noqa: PR01
+        """
+        Compute correlation with `other` Series, excluding missing values.
+
+        The two `Series` objects are not required to be the same length and will be
+        aligned internally before the correlation function is applied.
+
+        Returns
+        -------
+        float
+            Correlation with other.
+        """
+        return SeriesDefault.register(pandas.Series.corr)(self, **kwargs)
+
     @doc_utils.add_refer_to("DataFrame.corrwith")
     def corrwith(self, **kwargs):  # noqa: PR01
         """
diff --git a/modin/pandas/series.py b/modin/pandas/series.py
--- a/modin/pandas/series.py
+++ b/modin/pandas/series.py
@@ -823,8 +823,8 @@ def corr(self, other, method="pearson", min_periods=None):  # noqa: PR01, RT01,
                 np.clip(result.imag, -1, 1, out=result.imag)
             return result[0]
 
-        return self.__constructor__(
-            query_compiler=self._query_compiler.series_corr(other, method, min_periods)
+        return self._query_compiler.series_corr(
+            other=other, method=method, min_periods=min_periods
         )
 
     def count(self):  # noqa: PR01, RT01, D200


Test patch:
diff --git a/modin/tests/pandas/test_series.py b/modin/tests/pandas/test_series.py
--- a/modin/tests/pandas/test_series.py
+++ b/modin/tests/pandas/test_series.py
@@ -1400,11 +1400,12 @@ def test_copy_empty_series():
     assert res.dtype == ser.dtype
 
 
+@pytest.mark.parametrize("method", ["pearson", "kendall"])
 @pytest.mark.parametrize("data", test_data_values, ids=test_data_keys)
-def test_corr(data):
+def test_corr(data, method):
     modin_series, pandas_series = create_test_series(data)
-    modin_result = modin_series.corr(modin_series)
-    pandas_result = pandas_series.corr(pandas_series)
+    modin_result = modin_series.corr(modin_series, method=method)
+    pandas_result = pandas_series.corr(pandas_series, method=method)
     df_equals(modin_result, pandas_result)