<jupyter_start><jupyter_text>Dutch Citizen Identification Numbers  Introduction The function `clean_nl_bsn()` cleans a column containing Burgerservicenummer (BSN, the Dutch citizen identification number) strings, and standardizes them in a given format. The function `validate_nl_bsn()` validates either a single BSN strings, a column of BSN strings or a DataFrame of BSN strings, returning `True` if the value is valid, and `False` otherwise. BSN strings can be converted to the following formats via the `output_format` parameter:* `compact`: only number strings without any seperators or whitespace, like "111222333"* `standard`: BSN strings with proper whitespace in the proper places, like "1112.22.333"Invalid parsing is handled with the `errors` parameter:* `coerce` (default): invalid parsing will be set to NaN* `ignore`: invalid parsing will return the input* `raise`: invalid parsing will raise an exceptionThe following sections demonstrate the functionality of `clean_nl_bsn()` and `validate_nl_bsn()`.   An example dataset containing BSN strings<jupyter_code>import pandas as pd
import numpy as np
df = pd.DataFrame(
    {
        "bsn": [
            "111222333",
            "1112223334",
            "51824753556",
            "51 824 753 556",
            "hello",
            np.nan,
            "NULL"
        ], 
        "address": [
            "123 Pine Ave.",
            "main st",
            "1234 west main heights 57033",
            "apt 1 789 s maple rd manhattan",
            "robie house, 789 north main street",
            "(staples center) 1111 S Figueroa St, Los Angeles",
            "hello",
        ]
    }
)
df<jupyter_output><empty_output><jupyter_text>1. Default `clean_nl_bsn`By default, `clean_nl_bsn` will clean bsn strings and output them in the standard format with proper separators.<jupyter_code>from dataprep.clean import clean_nl_bsn
clean_nl_bsn(df, column = "bsn")<jupyter_output><empty_output><jupyter_text>2. Output formats This section demonstrates the output parameter.  `standard` (default)<jupyter_code>clean_nl_bsn(df, column = "bsn", output_format="standard")<jupyter_output><empty_output><jupyter_text>`compact`<jupyter_code>clean_nl_bsn(df, column = "bsn", output_format="compact")<jupyter_output><empty_output><jupyter_text>3. `inplace` parameterThis deletes the given column from the returned DataFrame. A new column containing cleaned BSN strings is added with a title in the format `"{original title}_clean"`.<jupyter_code>clean_nl_bsn(df, column="bsn", inplace=True)<jupyter_output><empty_output><jupyter_text>4. `errors` parameter  `coerce` (default)<jupyter_code>clean_nl_bsn(df, "bsn", errors="coerce")<jupyter_output><empty_output><jupyter_text>`ignore`<jupyter_code>clean_nl_bsn(df, "bsn", errors="ignore")<jupyter_output><empty_output><jupyter_text>4. `validate_nl_bsn()` `validate_nl_bsn()` returns `True` when the input is a valid BSN. Otherwise it returns `False`.The input of `validate_nl_bsn()` can be a string, a Pandas DataSeries, a Dask DataSeries, a Pandas DataFrame and a dask DataFrame.When the input is a string, a Pandas DataSeries or a Dask DataSeries, user doesn't need to specify a column name to be validated. When the input is a Pandas DataFrame or a dask DataFrame, user can both specify or not specify a column name to be validated. If user specify the column name, `validate_nl_bsn()` only returns the validation result for the specified column. If user doesn't specify the column name, `validate_nl_bsn()` returns the validation result for the whole DataFrame.<jupyter_code>from dataprep.clean import validate_nl_bsn
print(validate_nl_bsn("111222333"))
print(validate_nl_bsn("1112223334"))
print(validate_nl_bsn("51824753556"))
print(validate_nl_bsn("51 824 753 556"))
print(validate_nl_bsn("hello"))
print(validate_nl_bsn(np.nan))
print(validate_nl_bsn("NULL"))<jupyter_output><empty_output><jupyter_text>Series<jupyter_code>validate_nl_bsn(df["bsn"])<jupyter_output><empty_output><jupyter_text>DataFrame + Specify Column<jupyter_code>validate_nl_bsn(df, column="bsn")<jupyter_output><empty_output><jupyter_text>Only DataFrame<jupyter_code>validate_nl_bsn(df)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09670487106017192, 'fraction_numerical': 0.030563514804202482, 'mean_word_length': 5.415007656967841, 'pattern_counts': {'":': 2, '<': 45, '<?xml version=': 0, '>': 45, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '11', 'dir': 'jupyter-structured-clean-dedup', 'id': '266263', 'license': 'MIT', 'n_tokens_mistral': 1427, 'n_tokens_neox': 1306, 'n_words': 400, 'path': 'docs/source/user_guide/clean/clean_nl_bsn.ipynb', 'repo_name': 'jwa345/dataprep', 'size': '4188'}