| """
|
| Generated by RIMI
|
| """
|
| import sys
|
| import traceback
|
|
|
| passed = 0
|
| failed = 0
|
| skipped = 0
|
|
|
| def test(name, func):
|
| global passed, failed, skipped
|
| try:
|
| result = func()
|
| if isinstance(result, str) and result == "SKIP":
|
| skipped += 1
|
| print(f" SKIP #{passed+failed+skipped:02d} {name}")
|
| else:
|
| passed += 1
|
| print(f" OK #{passed+failed+skipped:02d} {name}")
|
| except Exception as e:
|
| failed += 1
|
| print(f" FAIL #{passed+failed+skipped:02d} {name}: {e}")
|
| traceback.print_exc()
|
|
|
| print("=" * 60)
|
| print("pandas 2.3.3 — Android norelro test")
|
| print("Python", sys.version)
|
| print("=" * 60)
|
|
|
|
|
| test("import pandas", lambda: __import__("pandas"))
|
|
|
|
|
| test("pandas.__version__", lambda: None if __import__("pandas").__version__ == "2.3.3" else (_ for _ in ()).throw(Exception(f"wrong version")))
|
|
|
|
|
| test("import numpy (bundled dep)", lambda: __import__("numpy"))
|
|
|
|
|
| test("DataFrame create", lambda: __import__("pandas").DataFrame({"a": [1, 2], "b": [3, 4]}))
|
|
|
|
|
| def test_shape():
|
| import pandas as pd
|
| df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
|
| assert df.shape == (3, 2), f"wrong shape: {df.shape}"
|
| test("DataFrame shape", test_shape)
|
|
|
|
|
| def test_head_tail():
|
| import pandas as pd
|
| df = pd.DataFrame({"x": range(100)})
|
| assert len(df.head(5)) == 5
|
| assert len(df.tail(5)) == 5
|
| test("DataFrame head/tail", test_head_tail)
|
|
|
|
|
| def test_dtypes():
|
| import pandas as pd
|
| df = pd.DataFrame({"a": [1, 2], "b": [1.0, 2.0], "c": ["x", "y"]})
|
| assert df.dtypes["a"].name == "int64"
|
| assert df.dtypes["b"].name == "float64"
|
| assert df.dtypes["c"].name == "object"
|
| test("DataFrame dtypes", test_dtypes)
|
|
|
|
|
| def test_describe():
|
| import pandas as pd
|
| df = pd.DataFrame({"a": [1, 2, 3, 4, 5]})
|
| desc = df.describe()
|
| assert desc.loc["mean", "a"] == 3.0
|
| test("DataFrame describe", test_describe)
|
|
|
|
|
| def test_groupby():
|
| import pandas as pd
|
| df = pd.DataFrame({"g": ["a", "a", "b"], "v": [1, 2, 3]})
|
| result = df.groupby("g")["v"].sum()
|
| assert result["a"] == 3
|
| assert result["b"] == 3
|
| test("DataFrame groupby", test_groupby)
|
|
|
|
|
| def test_sort():
|
| import pandas as pd
|
| df = pd.DataFrame({"a": [3, 1, 2]})
|
| df_sorted = df.sort_values("a")
|
| assert list(df_sorted["a"]) == [1, 2, 3]
|
| test("DataFrame sort_values", test_sort)
|
|
|
|
|
| def test_apply():
|
| import pandas as pd
|
| df = pd.DataFrame({"a": [1, 2, 3]})
|
| result = df["a"].apply(lambda x: x * 2)
|
| assert list(result) == [2, 4, 6]
|
| test("DataFrame apply", test_apply)
|
|
|
|
|
| def test_merge():
|
| import pandas as pd
|
| a = pd.DataFrame({"k": [1, 2], "v": ["a", "b"]})
|
| b = pd.DataFrame({"k": [1, 2], "w": ["c", "d"]})
|
| m = a.merge(b, on="k")
|
| assert list(m.columns) == ["k", "v", "w"]
|
| assert len(m) == 2
|
| test("DataFrame merge", test_merge)
|
|
|
|
|
| def test_concat():
|
| import pandas as pd
|
| a = pd.DataFrame({"a": [1, 2]})
|
| b = pd.DataFrame({"a": [3, 4]})
|
| c = pd.concat([a, b], ignore_index=True)
|
| assert list(c["a"]) == [1, 2, 3, 4]
|
| test("DataFrame concat", test_concat)
|
|
|
|
|
| def test_fillna():
|
| import pandas as pd
|
| df = pd.DataFrame({"a": [1, None, 3]})
|
| filled = df.fillna(0)
|
| assert list(filled["a"]) == [1.0, 0.0, 3.0]
|
| dropped = df.dropna()
|
| assert len(dropped) == 2
|
| test("DataFrame fillna/dropna", test_fillna)
|
|
|
|
|
| def test_pivot():
|
| import pandas as pd
|
| df = pd.DataFrame({"r": ["a", "a"], "c": ["x", "y"], "v": [1, 2]})
|
| p = df.pivot(index="r", columns="c", values="v")
|
| assert p.loc["a", "x"] == 1
|
| assert p.loc["a", "y"] == 2
|
| test("DataFrame pivot", test_pivot)
|
|
|
|
|
| def test_melt():
|
| import pandas as pd
|
| df = pd.DataFrame({"id": [1], "x": [2], "y": [3]})
|
| m = pd.melt(df, id_vars=["id"])
|
| assert len(m) == 2
|
| test("DataFrame melt", test_melt)
|
|
|
|
|
| def test_series():
|
| import pandas as pd
|
| s = pd.Series([1, 2, 3, 4])
|
| assert s.sum() == 10
|
| assert s.mean() == 2.5
|
| assert s.max() == 4
|
| assert s.min() == 1
|
| test("Series agg ops", test_series)
|
|
|
|
|
| def test_datetime():
|
| import pandas as pd
|
| dates = pd.date_range("2024-01-01", periods=5, freq="D")
|
| assert len(dates) == 5
|
| assert dates[0].year == 2024
|
| assert dates[0].month == 1
|
| assert dates[0].day == 1
|
| test("DatetimeIndex", test_datetime)
|
|
|
|
|
| def test_timedelta():
|
| import pandas as pd
|
| td = pd.Timedelta("1 day 2 hours")
|
| assert td.total_seconds() == 93600.0
|
| test("Timedelta", test_timedelta)
|
|
|
|
|
| def test_csv():
|
| import pandas as pd, os, tempfile
|
| df = pd.DataFrame({"a": [1, 2, 3], "b": ["x", "y", "z"]})
|
| with tempfile.NamedTemporaryFile(suffix=".csv", delete=False, mode="w") as f:
|
| df.to_csv(f, index=False)
|
| tmp = f.name
|
| df2 = pd.read_csv(tmp)
|
| os.unlink(tmp)
|
| assert list(df2["a"]) == [1, 2, 3]
|
| assert list(df2["b"]) == ["x", "y", "z"]
|
| test("read_csv / to_csv roundtrip", test_csv)
|
|
|
|
|
| def test_json():
|
| import pandas as pd, os, tempfile
|
| df = pd.DataFrame({"a": [1, 2], "b": [3.0, 4.0]})
|
| with tempfile.NamedTemporaryFile(suffix=".json", delete=False) as f:
|
| df.to_json(f, orient="records")
|
| tmp = f.name
|
| df2 = pd.read_json(tmp, orient="records")
|
| os.unlink(tmp)
|
| assert list(df2["a"]) == [1, 2]
|
| test("read_json / to_json roundtrip", test_json)
|
|
|
|
|
| def test_value_counts():
|
| import pandas as pd
|
| s = pd.Series(["a", "b", "a", "a", "b"])
|
| vc = s.value_counts()
|
| assert vc["a"] == 3
|
| assert vc["b"] == 2
|
| test("Series value_counts", test_value_counts)
|
|
|
|
|
| def test_corr():
|
| import pandas as pd
|
| df = pd.DataFrame({"a": [1, 2, 3], "b": [2, 4, 6]})
|
| corr = df["a"].corr(df["b"])
|
| assert abs(corr - 1.0) < 1e-10
|
| test("DataFrame corr", test_corr)
|
|
|
|
|
| def test_replace():
|
| import pandas as pd
|
| s = pd.Series([1, 2, 3])
|
| r = s.replace({1: "a", 2: "b", 3: "c"})
|
| assert list(r) == ["a", "b", "c"]
|
| test("Series replace", test_replace)
|
|
|
|
|
| def test_multiindex():
|
| import pandas as pd
|
| arrays = [["a", "a", "b", "b"], [1, 2, 1, 2]]
|
| idx = pd.MultiIndex.from_arrays(arrays, names=["l1", "l2"])
|
| df = pd.DataFrame({"v": [10, 20, 30, 40]}, index=idx)
|
| assert df.loc["a", 1].iloc[0] == 10
|
| test("MultiIndex", test_multiindex)
|
|
|
|
|
| def test_to_numpy():
|
| import pandas as pd
|
| df = pd.DataFrame({"a": [1, 2], "b": [3, 4]})
|
| arr = df.to_numpy()
|
| assert arr.shape == (2, 2)
|
| assert arr[0, 0] == 1
|
| assert arr[1, 1] == 4
|
| test("DataFrame to_numpy", test_to_numpy)
|
|
|
|
|
| def test_categorical():
|
| import pandas as pd
|
| s = pd.Categorical(["a", "b", "a", "c"])
|
| assert len(s) == 4
|
| assert s.categories.tolist() == ["a", "b", "c"]
|
| test("Categorical", test_categorical)
|
|
|
|
|
| def test_assign():
|
| import pandas as pd
|
| df = pd.DataFrame({"a": [1, 2]})
|
| df2 = df.assign(b=df["a"] * 10)
|
| assert list(df2["b"]) == [10, 20]
|
| test("DataFrame assign", test_assign)
|
|
|
|
|
| def test_pipe():
|
| import pandas as pd
|
| df = pd.DataFrame({"a": [1, 2, 3]})
|
| def add_one(data):
|
| return data.assign(b=data["a"] + 1)
|
| df2 = df.pipe(add_one)
|
| assert list(df2["b"]) == [2, 3, 4]
|
| test("DataFrame pipe", test_pipe)
|
|
|
|
|
| def test_nlargest():
|
| import pandas as pd
|
| df = pd.DataFrame({"a": [10, 1, 5, 20, 3]})
|
| top = df.nlargest(2, "a")
|
| assert list(top["a"]) == [20, 10]
|
| test("DataFrame nlargest", test_nlargest)
|
|
|
| print()
|
| print("=" * 60)
|
| print(f"RESULT: {passed} PASS, {failed} FAIL, {skipped} SKIP")
|
| print("=" * 60)
|
|
|
| if failed > 0:
|
| sys.exit(1)
|
|
|