目录
2、astype()、describe() 、value_counts()
该部分的学习基于蓝桥云上的机器学习开放基础课,本章的学习链接:
本篇通过分析电信运营商的客户离网率数据集来熟悉 Pandas 数据探索的常用方法,并构建一个预测客户离网率的简单模型。
知识点:排列、索引、交叉表、透视表、数据探索
用到的结构:
- Series :类似于一维数组的对象
- DataFrame:一个二维数据结构,即一张表格
练习到的方法:
-
read_csv():读取数据
head()
:查看前五行- shape、columns:查看数据库的维度、列名
info():
输出 DataFrame 的一些总体信息astype()
:更改列的类型describe()
:显示数值特征(int64
和float64
)的基本统计学特性,如未缺失值的数值、均值、标准差、范围、四分位数等value_counts()
:查看类别(类型为 object )和布尔值(类型为 bool )特征。- sort_values(by='列名', ascending=False):根据列名排序,ascending=False表示降序,为true表示升序
DataFrame['Name']
:得到一个单独的列(Name为列名)apply():里面跟一个方法或操作
map():
通过一个 {old_value:new_value} 形式的字典替换某一列中的值-
repalce()
:替换 - df.groupby(by=grouping_columns)[columns_to_show].function():分组
pivot_table()
:建立透视表crosstab()
:构建交叉表insert()
:添加列drop()
:删除列和行
一、Pandas 的主要方法
Pandas 是基于 NumPy 的一种工具,提供了大量数据探索的方法。Pandas 可以使用类似 SQL 的方式对 .csv、.tsv、.xlsx 等格式的数据进行处理分析。
Pandas 主要使用的数据结构是 Series 和 DataFrame 类。下面简要介绍下这两类:
- Series 是一种类似于一维数组的对象,它由一组数据(各种 NumPy 数据类型)及一组与之相关的数据标签(即索引)组成。
- DataFrame 是一个二维数据结构,即一张表格,其中每列数据的类型相同。你可以把它看成由 Series 实例构成的字典。
1、基础使用
- 首先载入必要的库,即 NumPy 和 Pandas。
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
- 通过
read_csv()
方法读取数据,然后使用head()
方法查看前 5 行数据。
#read_csv() 读取数据方法
df = pd.read_csv('https://labfile.oss.aliyuncs.com/courses/1283/telecom_churn.csv')
# hand()查看前5行数据
df.head()
运行结果:
上图中的每行对应一位客户,每列对应客户的一个特征。
- 查看一下该数据库的维度、特征名称和特征类型。
df.shape
运行结果:
(3333, 20)
上述结果表明,我们的列表包含 3333 行和 20 列。
- 打印列名。
df.columns
运行结果:
Index(['State', 'Account length', 'Area code', 'International plan', 'Voice mail plan', 'Number vmail messages', 'Total day minutes', 'Total day calls', 'Total day charge', 'Total eve minutes', 'Total eve calls', 'Total eve charge', 'Total night minutes', 'Total night calls', 'Total night charge', 'Total intl minutes', 'Total intl calls', 'Total intl charge', 'Customer service calls', 'Churn'], dtype='object')
- 使用
info()
方法输出 DataFrame 的一些总体信息。
df.info()
运行结果:
<class 'pandas.core.frame.DataFrame'> RangeIndex: 3333 entries, 0 to 3332 Data columns (total 20 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 State 3333 non-null object 1 Account length 3333 non-null int64 2 Area code 3333 non-null int64 3 International plan 3333 non-null object 4 Voice mail plan 3333 non-null object 5 Number vmail messages 3333 non-null int64 6 Total day minutes 3333 non-null float64 7 Total day calls 3333 non-null int64 8 Total day charge 3333 non-null float64 9 Total eve minutes 3333 non-null float64 10 Total eve calls 3333 non-null int64 11 Total eve charge 3333 non-null float64 12 Total night minutes 3333 non-null float64 13 Total night calls 3333 non-null int64 14 Total night charge 3333 non-null float64 15 Total intl minutes 3333 non-null float64 16 Total intl calls 3333 non-null int64 17 Total intl charge 3333 non-null float64 18 Customer service calls 3333 non-null int64 19 Churn 3333 non-null bool dtypes: bool(1), float64(8), int64(8), object(3) memory usage: 498.1+ KB
bool
、int64
、float64
和 object
是该数据库特征的数据类型。这一方法同时也会显示是否有缺失值,上述结果表明在该数据集中不存在缺失值,因为每列都包含 3333 个观测,和我们之前使用 shape
方法得到的数字是一致的。