使用Pandas熟悉数据
任何机器学习项目的第一步都是熟悉数据。你可以用Pandas库。Pandas是科学家用来探索和操纵数据的主要工具。大多数人在他们的代码中将Pandas缩写为pd
。我们按章行事。
import pandas as pd
Pandas库最重要的部分是DataFrame。DataFrame持有类似于表格的数据类型。这与Excel中的表格或SQL数据库中的表类似。
Pandas有针对这种类型数据的大多数操作的强大方法。
例如,我们将查看澳大利亚墨尔本的房价数据。在练习中,您将应用相同的过程到一个包含爱荷华州房价的新数据集中。
示例(墨尔本)数据存储在文件路径 ../input/melbourne-housing-snapshot/melb_data.csv
中。
我们使用以下命令加载和探索数据:
# save filepath to variable for easier access
melbourne_file_path = '../input/melbourne-housing-snapshot/melb_data.csv'
# read the data and store data in DataFrame titled melbourne_data
melbourne_data = pd.read_csv(melbourne_file_path)
# print a summary of the data in Melbourne data
melbourne_data.describe()
Rooms | Price | Distance | Postcode | Bedroom2 | Bathroom | Car | Landsize | BuildingArea | YearBuilt | Lattitude | Longtitude | Propertycount | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
count | 13580.000000 | 1.358000e+04 | 13580.000000 | 13580.000000 | 13580.000000 | 13580.000000 | 13518.000000 | 13580.000000 | 7130.000000 | 8205.000000 | 13580.000000 | 13580.000000 | 13580.000000 |
mean | 2.937997 | 1.075684e+06 | 10.137776 | 3105.301915 | 2.914728 | 1.534242 | 1.610075 | 558.416127 | 151.967650 | 1964.684217 | -37.809203 | 144.995216 | 7454.417378 |
std | 0.955748 | 6.393107e+05 | 5.868725 | 90.676964 | 0.965921 | 0.691712 | 0.962634 | 3990.669241 | 541.014538 | 37.273762 | 0.079260 | 0.103916 | 4378.581772 |
min | 1.000000 | 8.500000e+04 | 0.000000 | 3000.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 1196.000000 | -38.182550 | 144.431810 | 249.000000 |
25% | 2.000000 | 6.500000e+05 | 6.100000 | 3044.000000 | 2.000000 | 1.000000 | 1.000000 | 177.000000 | 93.000000 | 1940.000000 | -37.856822 | 144.929600 | 4380.000000 |
50% | 3.000000 | 9.030000e+05 | 9.200000 | 3084.000000 | 3.000000 | 1.000000 | 2.000000 | 440.000000 | 126.000000 | 1970.000000 | -37.802355 | 145.000100 | 6555.000000 |
75% | 3.000000 | 1.330000e+06 | 13.000000 | 3148.000000 | 3.000000 | 2.000000 | 2.000000 | 651.000000 | 174.000000 | 1999.000000 | -37.756400 | 145.058305 | 10331.000000 |
max | 10.000000 | 9.000000e+06 | 48.100000 | 3977.000000 | 20.000000 | 8.000000 | 10.000000 | 433014.000000 | 44515.000000 | 2018.000000 | -37.408530 | 145.526350 | 21650.000000 |
数据描述的解释
结果显示您原始数据集中每列有8个数字。第一个数字,即count,显示有多少行具有非缺失值。
缺失值有许多原因。例如,在调查一间1卧室的房屋时,不会收集2号卧室的大小。我们将回到缺失数据的主题。
第二个值mean是平均值。在下面,std是标准偏差,它衡量数值的分散程度。
要解释min, 25%, 50%, 75% 和 max,请想象将每列从最低到最高值进行排序。第一个(最小)值是最小值。如果您浏览列表的四分之一,您会发现一个数字大于25%的值且小于75%的值。这是第 25% 的值(发音为 "25th percentile")。50%和75%的百分位数类似地定义,max是最大的数字。
选择建模所需的数据
您的数据集中有太多的变量,以至于您无法理解,甚至无法很好地打印出来。你怎样才能把这么庞大的数据压缩成你能理解的东西呢?
我们先用我们的直觉挑选一些变量。稍后的课程将向您展示统计技术,以自动排列变量的优先级。
要选择变量/列,我们需要查看数据集中所有列的列表。这是通过 DataFrame 的 columns 属性(下面代码的底部)完成的。
import pandas as pd
melbourne_file_path = '../input/melbourne-housing-snapshot/melb_data.csv'
melbourne_data = pd.read_csv(melbourne_file_path)
melbourne_data.columns
Index(['Suburb', 'Address', 'Rooms', 'Type', 'Price', 'Method', 'SellerG',
'Date', 'Distance', 'Postcode', 'Bedroom2', 'Bathroom', 'Car',
'Landsize', 'BuildingArea', 'YearBuilt', 'CouncilArea', 'Lattitude',
'Longtitude', 'Regionname', 'Propertycount'],
dtype='object')
# 墨尔本的数据有一些缺失的值(一些房子的一些变量没有记录。)
# 在后面的教程中,我们将学习如何处理缺失的值。
# 爱荷华州数据在所使用的列中没有缺失值。
# 因此,我们现在将采取最简单的方法,从我们的数据中删除房屋。
# 现在不用担心这个,尽管代码是:
# dropna 删除丢失的值(将 na 想象为“不可用”)
melbourne_data = melbourne_data.dropna(axis=0)
有许多方法可以选择数据的子集。Pandas课程对此进行了更深入的介绍,但现在我们将重点关注两种方法。
- 点表示法(Dot notation),用于选择“预测目标”
- 使用列名list进行选择,用于选择“特征”
选择预测目标
可以使用 点表示法 提取变量。这个单个列存储在 Series 中,它类似于只有一列数据的DataFrame。
我们将使用点表示法来选择要预测的列,称为 预测目标。按照惯例,预测目标称为 y。因此,我们需要的代码来保存墨尔本数据中房屋价格的是:
y = melbourne_data.Price
“特征”选择
输入到我们的模型中的列(以及后来用于进行预测的列)被称为“特征”。在我们的例子中,这些将是用于确定房屋价格的列。有时,您将使用除目标之外的所有列作为特征。其他时候,使用更少的特征会更好。
现在,我们将构建一个只有几个特征的模型。稍后您将看到如何迭代和比较使用不同特征构建的模型。
我们通过在括号中提供列名列表来选择多个特征。列表中的每个项应该是一个字符串(带引号)。
这里有一个例子:
melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']
按照惯例,这些数据称为 X 。
X = melbourne_data[melbourne_features]
让我们用describe
方法和head
方法快速回顾一下预测房价的数据,这两种方法显示了前几行。
X.describe()
Rooms | Bathroom | Landsize | Lattitude | Longtitude | |
---|---|---|---|---|---|
count | 6196.000000 | 6196.000000 | 6196.000000 | 6196.000000 | 6196.000000 |
mean | 2.931407 | 1.576340 | 471.006940 | -37.807904 | 144.990201 |
std | 0.971079 | 0.711362 | 897.449881 | 0.075850 | 0.099165 |
min | 1.000000 | 1.000000 | 0.000000 | -38.164920 | 144.542370 |
25% | 2.000000 | 1.000000 | 152.000000 | -37.855438 | 144.926198 |
50% | 3.000000 | 1.000000 | 373.000000 | -37.802250 | 144.995800 |
75% | 4.000000 | 2.000000 | 628.000000 | -37.758200 | 145.052700 |
max | 8.000000 | 8.000000 | 37000.000000 | -37.457090 | 145.526350 |
X.head()
Rooms | Bathroom | Landsize | Lattitude | Longtitude | |
---|---|---|---|---|---|
1 | 2 | 1.0 | 156.0 | -37.8079 | 144.9934 |
2 | 3 | 2.0 | 134.0 | -37.8093 | 144.9944 |
4 | 4 | 1.0 | 120.0 | -37.8072 | 144.9941 |
6 | 3 | 2.0 | 245.0 | -37.8024 | 144.9993 |
7 | 2 | 1.0 | 256.0 | -37.8060 | 144.9954 |
使用这些命令可视化地检查数据是数据科学家工作的重要组成部分。您经常会在数据集中发现值得进一步检查的惊喜。
标题:kaggle机器学习入门(一)使用Pandas熟悉数据
作者:Departure
地址:https://www.unreachablecity.club/articles/2023/04/15/1681520085301.html
Comments | 1 条评论
博主好帅,我好喜欢❤️