[SPARK-32722][PYTHON][DOCS] Update document type conversion for Pandas UDFs (pyarrow 1.0.1, pandas 1.1.1, Python 3.7)
[SPARK-32722][PYTHON][DOCS] Update document type conversion for Pandas UDFs (pyarrow 1.0.1, pandas 1.1.1, Python 3.7)

### What changes were proposed in this pull request?

This PR updates the chart generated at SPARK-25666. We bumped up the minimal PyArrow version. It's better to use PyArrow 0.15.1+

### Why are the changes needed?

To track the changes in type coercion of PySpark <> PyArrow <> pandas.

### Does this PR introduce _any_ user-facing change?

No.

### How was this patch tested?

Use this code to generate the chart:

```python
from pyspark.sql.types import *
from pyspark.sql.functions import pandas_udf

columns = [
    ('none', 'object(NoneType)'),
    ('bool', 'bool'),
    ('int8', 'int8'),
    ('int16', 'int16'),
    ('int32', 'int32'),
    ('int64', 'int64'),
    ('uint8', 'uint8'),
    ('uint16', 'uint16'),
    ('uint32', 'uint32'),
    ('uint64', 'uint64'),
    ('float64', 'float16'),
    ('float64', 'float32'),
    ('float64', 'float64'),
    ('date', 'datetime64[ns]'),
    ('tz_aware_dates', 'datetime64[ns, US/Eastern]'),
    ('string', 'object(string)'),
    ('decimal', 'object(Decimal)'),
    ('array', 'object(array[int32])'),
    ('float128', 'float128'),
    ('complex64', 'complex64'),
    ('complex128', 'complex128'),
    ('category', 'category'),
    ('tdeltas', 'timedelta64[ns]'),
]

def create_dataframe():
    import pandas as pd
    import numpy as np
    import decimal
    pdf = pd.DataFrame({
        'none': [None, None],
        'bool': [True, False],
        'int8': np.arange(1, 3).astype('int8'),
        'int16': np.arange(1, 3).astype('int16'),
        'int32': np.arange(1, 3).astype('int32'),
        'int64': np.arange(1, 3).astype('int64'),
        'uint8': np.arange(1, 3).astype('uint8'),
        'uint16': np.arange(1, 3).astype('uint16'),
        'uint32': np.arange(1, 3).astype('uint32'),
        'uint64': np.arange(1, 3).astype('uint64'),
        'float16': np.arange(1, 3).astype('float16'),
        'float32': np.arange(1, 3).astype('float32'),
        'float64': np.arange(1, 3).astype('float64'),
        'float128': np.arange(1, 3).astype('float128'),
        'complex64': np.arange(1, 3).astype('complex64'),
        'complex128': np.arange(1, 3).astype('complex128'),
        'string': list('ab'),
        'array': pd.Series([np.array([1, 2, 3], dtype=np.int32), np.array([1, 2, 3], dtype=np.int32)]),
        'decimal': pd.Series([decimal.Decimal('1'), decimal.Decimal('2')]),
        'date': pd.date_range('19700101', periods=2).values,
        'category': pd.Series(list("AB")).astype('category')})
    pdf['tdeltas'] = [pdf.date.diff()[1], pdf.date.diff()[0]]
    pdf['tz_aware_dates'] = pd.date_range('19700101', periods=2, tz='US/Eastern')
    return pdf

types =  [
    BooleanType(),
    ByteType(),
    ShortType(),
    IntegerType(),
    LongType(),
    FloatType(),
    DoubleType(),
    DateType(),
    TimestampType(),
    StringType(),
    DecimalType(10, 0),
    ArrayType(IntegerType()),
    MapType(StringType(), IntegerType()),
    StructType([StructField("_1", IntegerType())]),
    BinaryType(),
]

df = spark.range(2).repartition(1)
results = []
count = 0
total = len(types) * len(columns)
values = []
spark.sparkContext.setLogLevel("FATAL")
for t in types:
    result = []
    for column, pandas_t in columns:
        v = create_dataframe()[column][0]
        values.append(v)
        try:
            row = df.select(pandas_udf(lambda _: create_dataframe()[column], t)(df.id)).first()
            ret_str = repr(row[0])
        except Exception:
            ret_str = "X"
        result.append(ret_str)
        progress = "SQL Type: [%s]\n  Pandas Value(Type): %s(%s)]\n  Result Python Value: [%s]" % (
            t.simpleString(), v, pandas_t, ret_str)
        count += 1
        print("%s/%s:\n  %s" % (count, total, progress))
    results.append([t.simpleString()] + list(map(str, result)))

schema = ["SQL Type \\ Pandas Value(Type)"] + list(map(lambda values_column: "%s(%s)" % (values_column[0], values_column[1][1]), zip(values, columns)))
strings = spark.createDataFrame(results, schema=schema)._jdf.showString(20, 20, False)
print("\n".join(map(lambda line: "    # %s  # noqa" % line, strings.strip().split("\n"))))
```

Closes #29569 from HyukjinKwon/SPARK-32722.

Authored-by: HyukjinKwon <2680965ad5aae29275c8fb10150cb10f5554e78b@apache.org>
Signed-off-by: HyukjinKwon <2680965ad5aae29275c8fb10150cb10f5554e78b@apache.org>

mahak/spark,dongjoon-hyun/spark,xuanyuanking/spark,nchammas/spark,ueshin/apache-spark,dongjoon-hyun/spark,maropu/spark,apache/spark,rednaxelafx/apache-spark,BryanCutler/spark,vinodkc/spark,zzcclp/spark,zero323/spark,mahak/spark,chuckchen/spark,chuckchen/spark,HyukjinKwon/spark,hvanhovell/spark,WeichenXu123/spark,vinodkc/spark,srowen/spark,shaneknapp/spark,ueshin/apache-spark,vinodkc/spark,zero323/spark,zzcclp/spark,chuckchen/spark,zero323/spark,witgo/spark,hvanhovell/spark,BryanCutler/spark,chuckchen/spark,xuanyuanking/spark,WeichenXu123/spark,WeichenXu123/spark,wzhfy/spark,cloud-fan/spark,milliman/spark,gengliangwang/spark,ptkool/spark,nchammas/spark,xuanyuanking/spark,HyukjinKwon/spark,chuckchen/spark,zzcclp/spark,JoshRosen/spark,holdenk/spark,cloud-fan/spark,chuckchen/spark,dongjoon-hyun/spark,wangmiao1981/spark,ueshin/apache-spark,witgo/spark,cloud-fan/spark,BryanCutler/spark,wzhfy/spark,shaneknapp/spark,wangyum/spark,zzcclp/spark,vinodkc/spark,jiangxb1987/spark,mahak/spark,shuangshuangwang/spark,shuangshuangwang/spark,mahak/spark,mahak/spark,xuanyuanking/spark,shaneknapp/spark,gengliangwang/spark,mahak/spark,wzhfy/spark,witgo/spark,ueshin/apache-spark,jiangxb1987/spark,ptkool/spark,apache/spark,taroplus/spark,shuangshuangwang/spark,hvanhovell/spark,HyukjinKwon/spark,xuanyuanking/spark,zero323/spark,wangmiao1981/spark,wangmiao1981/spark,milliman/spark,holdenk/spark,wangyum/spark,ueshin/apache-spark,srowen/spark,wangmiao1981/spark,rednaxelafx/apache-spark,holdenk/spark,cloud-fan/spark,apache/spark,apache/spark,gengliangwang/spark,WeichenXu123/spark,ptkool/spark,ueshin/apache-spark,nchammas/spark,gengliangwang/spark,wangmiao1981/spark,taroplus/spark,witgo/spark,taroplus/spark,wangyum/spark,jiangxb1987/spark,dongjoon-hyun/spark,dongjoon-hyun/spark,BryanCutler/spark,zzcclp/spark,srowen/spark,wangyum/spark,holdenk/spark,xuanyuanking/spark,srowen/spark,vinodkc/spark,holdenk/spark,wzhfy/spark,rednaxelafx/apache-spark,gengliangwang/spark,HyukjinKwon/spark,taroplus/spark,shuangshuangwang/spark,rednaxelafx/apache-spark,jiangxb1987/spark,zero323/spark,wzhfy/spark,taroplus/spark,JoshRosen/spark,shuangshuangwang/spark,JoshRosen/spark,apache/spark,jiangxb1987/spark,wzhfy/spark,rednaxelafx/apache-spark,BryanCutler/spark,WeichenXu123/spark,witgo/spark,shaneknapp/spark,JoshRosen/spark,JoshRosen/spark,milliman/spark,HyukjinKwon/spark,hvanhovell/spark,nchammas/spark,shaneknapp/spark,zzcclp/spark,wangmiao1981/spark,shuangshuangwang/spark,zero323/spark,hvanhovell/spark,holdenk/spark,WeichenXu123/spark,ptkool/spark,ptkool/spark,jiangxb1987/spark,holdenk/spark,hvanhovell/spark,milliman/spark,gengliangwang/spark,nchammas/spark,witgo/spark,vinodkc/spark,hvanhovell/spark,wangyum/spark,srowen/spark,xuanyuanking/spark,mahak/spark,ptkool/spark,taroplus/spark,HyukjinKwon/spark,vinodkc/spark,wangmiao1981/spark,nchammas/spark,maropu/spark,cloud-fan/spark,dongjoon-hyun/spark,cloud-fan/spark,milliman/spark,ptkool/spark,WeichenXu123/spark,maropu/spark,milliman/spark,chuckchen/spark,HyukjinKwon/spark,gengliangwang/spark,srowen/spark,apache/spark,srowen/spark,maropu/spark,cloud-fan/spark,BryanCutler/spark,taroplus/spark,BryanCutler/spark,shaneknapp/spark,JoshRosen/spark,apache/spark,shuangshuangwang/spark,zzcclp/spark,zero323/spark,jiangxb1987/spark,milliman/spark,wzhfy/spark,wangyum/spark,witgo/spark,rednaxelafx/apache-spark,rednaxelafx/apache-spark,maropu/spark,shaneknapp/spark,JoshRosen/spark,maropu/spark,wangyum/spark,dongjoon-hyun/spark,maropu/spark,ueshin/apache-spark,nchammas/spark