--- /dev/null
+.. _cookbook:
+
+{{ header }}
+
+.. _cookbook.idioms:
+.. _cookbook.selection:
+.. _cookbook.multi_index:
+.. _cookbook.missing_data:
+.. _cookbook.grouping:
+.. _cookbook.pivot:
+.. _cookbook.resample:
+.. _cookbook.merge:
+.. _cookbook.plotting:
+.. _cookbook.csv:
+.. _cookbook.csv.multiple_files:
+.. _cookbook.sql:
+.. _cookbook.excel:
+.. _cookbook.html:
+.. _cookbook.hdf:
+.. _cookbook.binary:
+
+This page has been removed for copyright reasons.
scale
sparse
gotchas
- cookbook
# Replace all " with "".
# Wrap the entire thing in double quotes.
- uname = _get_unicode_name(name)
- if not len(uname):
+ name = _get_unicode_name(name)
+ if not len(name):
raise ValueError("Empty table or column name specified")
- nul_index = uname.find("\x00")
- if nul_index >= 0:
+ if '\0' in name:
raise ValueError("SQLite identifier cannot contain NULs")
- return '"' + uname.replace('"', '""') + '"'
+ name = name.replace('"', '""')
+ return '"' + name + '"'
class SQLiteTable(SQLTable):
tm.assert_series_equal(result, expected)
-def test_sort():
- # https://stackoverflow.com/questions/23814368/sorting-pandas-
- # categorical-labels-after-groupby
- # This should result in a properly sorted Series so that the plot
- # has a sorted x axis
- # self.cat.groupby(['value_group'])['value_group'].count().plot(kind='bar')
-
- df = DataFrame({"value": np.random.default_rng(2).integers(0, 10000, 100)})
- labels = [f"{i} - {i+499}" for i in range(0, 10000, 500)]
- cat_labels = Categorical(labels, labels)
-
- df = df.sort_values(by=["value"], ascending=True)
- df["value_group"] = pd.cut(
- df.value, range(0, 10500, 500), right=False, labels=cat_labels
- )
-
- res = df.groupby(["value_group"], observed=False)["value_group"].count()
- exp = res[sorted(res.index, key=lambda x: float(x.split()[0]))]
- exp.index = CategoricalIndex(exp.index, name=exp.index.name)
- tm.assert_series_equal(res, exp)
-
-
@pytest.mark.parametrize("ordered", [True, False])
def test_sort2(sort, ordered):
# dataframe groupby sort was being ignored # GH 8868
import pandas._testing as tm
-def test_detect_chained_assignment(using_copy_on_write, warn_copy_on_write):
- # Inplace ops, originally from:
- # https://stackoverflow.com/questions/20508968/series-fillna-in-a-multiindex-dataframe-does-not-fill-is-this-a-bug
- a = [12, 23]
- b = [123, None]
- c = [1234, 2345]
- d = [12345, 23456]
- tuples = [("eyes", "left"), ("eyes", "right"), ("ears", "left"), ("ears", "right")]
- events = {
- ("eyes", "left"): a,
- ("eyes", "right"): b,
- ("ears", "left"): c,
- ("ears", "right"): d,
- }
- multiind = MultiIndex.from_tuples(tuples, names=["part", "side"])
- zed = DataFrame(events, index=["a", "b"], columns=multiind)
-
- if using_copy_on_write:
- with tm.raises_chained_assignment_error():
- zed["eyes"]["right"].fillna(value=555, inplace=True)
- elif warn_copy_on_write:
- with tm.assert_produces_warning(None):
- zed["eyes"]["right"].fillna(value=555, inplace=True)
- else:
- msg = "A value is trying to be set on a copy of a slice from a DataFrame"
- with pytest.raises(SettingWithCopyError, match=msg):
- with tm.assert_produces_warning(None):
- zed["eyes"]["right"].fillna(value=555, inplace=True)
-
@td.skip_array_manager_invalid_test # with ArrayManager df.loc[0] is not a view
def test_cache_updating(using_copy_on_write, warn_copy_on_write):
with pytest.raises(TypeError, match=msg):
df.loc["bar"] *= 2
- def test_multiindex_setitem2(self):
- # from SO
- # https://stackoverflow.com/questions/24572040/pandas-access-the-level-of-multiindex-for-inplace-operation
- df_orig = DataFrame.from_dict(
- {
- "price": {
- ("DE", "Coal", "Stock"): 2,
- ("DE", "Gas", "Stock"): 4,
- ("DE", "Elec", "Demand"): 1,
- ("FR", "Gas", "Stock"): 5,
- ("FR", "Solar", "SupIm"): 0,
- ("FR", "Wind", "SupIm"): 0,
- }
- }
- )
- df_orig.index = MultiIndex.from_tuples(
- df_orig.index, names=["Sit", "Com", "Type"]
- )
-
- expected = df_orig.copy()
- expected.iloc[[0, 1, 3]] *= 2
-
- idx = pd.IndexSlice
- df = df_orig.copy()
- df.loc[idx[:, :, "Stock"], :] *= 2
- tm.assert_frame_equal(df, expected)
- df = df_orig.copy()
- df.loc[idx[:, :, "Stock"], "price"] *= 2
- tm.assert_frame_equal(df, expected)
def test_multiindex_assignment(self):
# GH3777 part 2
df["column1"] = df["column1"] + "c"
str(df)
- @pytest.mark.arm_slow
- def test_detect_chained_assignment_undefined_column(
- self, using_copy_on_write, warn_copy_on_write
- ):
- # from SO:
- # https://stackoverflow.com/questions/24054495/potential-bug-setting-value-for-undefined-column-using-iloc
- df = DataFrame(np.arange(0, 9), columns=["count"])
- df["group"] = "b"
- df_original = df.copy()
-
- if using_copy_on_write:
- with tm.raises_chained_assignment_error():
- df.iloc[0:5]["group"] = "a"
- tm.assert_frame_equal(df, df_original)
- elif warn_copy_on_write:
- with tm.raises_chained_assignment_error():
- df.iloc[0:5]["group"] = "a"
- else:
- with pytest.raises(SettingWithCopyError, match=msg):
- with tm.raises_chained_assignment_error():
- df.iloc[0:5]["group"] = "a"
@pytest.mark.arm_slow
def test_detect_chained_assignment_changing_dtype(
tm.assert_frame_equal(result, expected)
-def test_escapechar(all_parsers):
- # https://stackoverflow.com/questions/13824840/feature-request-for-
- # pandas-read-csv
- data = '''SEARCH_TERM,ACTUAL_URL
-"bra tv board","http://www.ikea.com/se/sv/catalog/categories/departments/living_room/10475/?se%7cps%7cnonbranded%7cvardagsrum%7cgoogle%7ctv_bord"
-"tv p\xc3\xa5 hjul","http://www.ikea.com/se/sv/catalog/categories/departments/living_room/10475/?se%7cps%7cnonbranded%7cvardagsrum%7cgoogle%7ctv_bord"
-"SLAGBORD, \\"Bergslagen\\", IKEA:s 1700-tals series","http://www.ikea.com/se/sv/catalog/categories/departments/living_room/10475/?se%7cps%7cnonbranded%7cvardagsrum%7cgoogle%7ctv_bord"'''
-
- parser = all_parsers
- result = parser.read_csv(
- StringIO(data), escapechar="\\", quotechar='"', encoding="utf-8"
- )
-
- assert result["SEARCH_TERM"][2] == 'SLAGBORD, "Bergslagen", IKEA:s 1700-tals series'
-
- tm.assert_index_equal(result.columns, Index(["SEARCH_TERM", "ACTUAL_URL"]))
-
def test_ignore_leading_whitespace(all_parsers):
# see gh-3374, gh-6607