读入数据:
import pandas as pd
reviews = pd.read_csv("winemag-data-130k-v2.csv", index_col=0)
1、查看数据集中评分列的数据类型
dtype = reviews.points.dtype
dtype
'''
dtype('int64')
'''
2、创建一个Series,其数据来自评分(points)中的项数,要求把这些项数转换成字符串型。提示:在python中string 是 “str”
point_strings = reviews.points.astype(str)
3、有时候价格(price)列是空的,那么我们怎么统计有多少空值?
# 第一种
missing_price_reviews = reviews[reviews.price.isnull()]
len(missing_price_reviews)
# 第二种
n_missing_prices = reviews.price.isnull().sum()
# 第三种
n_missing_prices = pd.isnull(reviews.price).sum()
'''
8996
'''
4、创建一个序列Series,它能够统计在region_1中的值出现的次数。需要注意的是用Unknown替换丢失的值,并降序排序。输出应有下面的样子:
'''
Unknown 21247
Napa Valley 4480
...
Bardolino Superiore 1
Primitivo del Tarantino 1
Name: region_1, Length: 1230, dtype: int64
'''
我们先来处理空值,使用pandas的fillna能够让我们替代空值。下面我们用Unknown替换Nan丢失的值。
reviews_per_region = reviews.region_1.fillna('Unknown')
reviews_per_region
'''
0 Etna
1 Unknown
2 Willamette Valley
3 Lake Michigan Shore
4 Willamette Valley
5 Navarra
6 Vittoria
7 Alsace
8 Unknown
9 Alsace
10 Napa Valley
11 Alsace
12 Alexander Valley
...
'''
蓝后再统计有多少这样的这些项。这里要用到value_counts()这个函数。
reviews_per_region = reviews.region_1.fillna('Unknown').value_counts()
type(reviews.region_1.fillna('Unknown'))
reviews_per_region
'''
pandas.core.series.Series
Unknown 21247
Napa Valley 4480
Columbia Valley (WA) 4124
Russian River Valley 3091
California 2629
Paso Robles 2350
Mendoza 2301
Willamette Valley 2301
Alsace 2163
Champagne 1613
Barolo 1599
Finger Lakes 1565
...
'''
最后再进行降序排序:
reviews_per_region = reviews.region_1.fillna('Unknown').value_counts().sort_values(ascending=False)
# type(reviews.region_1.fillna('Unknown'))
reviews_per_region
'''
Unknown 21247
Napa Valley 4480
Columbia Valley (WA) 4124
Russian River Valley 3091
California 2629
Paso Robles 2350
Mendoza 2301
Willamette Valley 2301
Alsace 2163
Champagne 1613
Barolo 1599
'''
注明:
以上数据来自kaggle learn
pandas Data types and missing data workbook