数据列属性
数据是在网上爬取的,总共有27个属性,分别是:
- 球员姓名
- 赛季
- 胜负
- 对手球队名称
- 对手球队总得分
- 己方球队总得分
- 己方球队名称
- 首发
- 上场时间
- 投篮命中率
- 投篮命中数
- 投篮出手数
- 三分命中率
- 三分命中数
- 三分出手数
- 罚球命中率
- 罚球命中数
- 罚球次数
- 总篮板数
- 前场篮板数
- 后场篮板数
- 助攻数
- 抢断数
- 盖帽数
- 失误数
- 犯规数
- 得分
数据读取
- 导入数据:
read_csv
- 读取头、尾的几行数据:
head(n);tail(n);
默认是5
行 - 读取列属性:
columns
属性 - 读取数据维度:
shape
属性
import numpy as np
import pandas as pd
# 读取数据
nba_data = pd.read_csv(r"D:\Python\datalearning\PandasLearning\NBA_Data.csv", encoding = 'gb18030')
# 读取头尾的5行数据。默认是5行
print(nba_data.head())
# print(nba_data.tail())
# 指定读取前8行数据
# print(nba_data.head(8))
# 查看read_csv()函数帮助文档
# print(help(pd.read_csv))
# 查看数据中的所有列属性
print(nba_data.columns)
# 查看数据大小:多少样本、多少个属性
print(nba_data.shape)
结果
Index(['球员姓名', '赛季', '胜负', '对手球队名称', '对手球队总得分', '己方球队总得分', '己方球队名称', '首发',
'上场时间', '投篮命中率', '投篮命中数', '投篮出手数', '三分命中率', '三分命中数', '三分出手数', '罚球命中率',
'罚球命中数', '罚球次数', '总篮板数', '前场篮板数', '后场篮板数', '助攻数', '抢断数', '盖帽数', '失误数',
'犯规数', '得分'],
dtype='object')
(1193, 27)
索引与计算
- 读取某行数据:
loc
属性 - 读取某列数据:df.["属性1"];有点类似字典,通过
key
获取所有的value
- 读取多列数据:df.[["属性1", "属性2"]]
# 提取第一行数据
print(nba_data.loc[0])
# print(nba_data.loc[3:8])
# print(nba_data.loc[[3, 5, 8]])
# 获取某列的值
print(nba_data["胜负"].head(10))
# 获取多列的值
# print(nba_data[["胜负", "助攻数"]])
# 将罚球命中率改成小数形式:除以100
# 将所有列属性转换成列表形式,方便进行读取
nba_names = nba_data.columns.tolist()
# 读取含有"率"的属性
percent_columns = [] # 定义空列表,用于存放获取到的属性值以“率”结尾的
for i in nba_names:
if i.endswith("率"):
percent_columns.append(i) # 判断属性i是否以“率”结尾
percent_nba = nba_data[percent_columns] / 100
print(percent_nba.head(10))
# print(nba_data[percent_columns]) DF的列属性
# 增加一列属性:失误和犯规;
# 数据的shape发生变化
sum_fangui_shiwu = nba_data['失误数'] + nba_data['犯规数']
nba_data["失误和犯规"] = sum_fangui_shiwu
print(nba_data.shape)
print(nba_data.head(6))