案例中使用宠物小精灵的相关数据进行分析,其中各列的列名意义为:
name | 宠物小精灵的名称 |
---|---|
Type 1 | 宠物小精灵的第一类型 |
Type 2 | 宠物小精灵的第二类型 |
HP | 生命点数 |
Attack | 攻击强度 |
Defense | 防御强度 |
Sp.Atk | 特殊攻击强度 |
Sp.Def | 特殊防御强度 |
Speed | 速度 |
Generation | 世代数 |
Total | 综合能力(生命点数、攻击强度、防御强度、特殊攻击强度、特殊防御强度和速度的总和) |
Lengendary | True表示为传奇小精灵,False表示非传奇小精灵 |
首先调用Pandas和NumPy模块。
1.首先调用Pandas和NumPy模块。
import pandas as pd
import numpy as np
2.使用read_csv读取Pokemon.csv文件,存储在变量df中,使用head展示数据的前十行。
df=pd.read_csv('./input/Pokemon.csv')
df.head(10)
3.使用pd.set_option设置只显示DataFrame最多10行样本,中间部分样本用省略号略过。
pd.set_option('display.max_rows',10)
df
4.删除名为#的列。
del df['#']
df
5.将各列名改为中文, 参数inplace设置是否替换原数据。
new_name={'Name':'名称','Type 1':'第一类型','Type 2':'第二类型','HP':'生命点数','Attack':'攻击强度','Defense':'防御强度',
'Sp. Atk':'特殊攻击强度','Sp. Def':'特殊防御强度','Speed':'速度','Generation':'世代数','Total':'综合能力','Legendary':'传奇小精灵'}
df.rename(columns=new_name,inplace='True')
df
6.分别查看数据表的行、列索引。
df.index
RangeIndex(start=0, stop=800, step=1)
df.columns
Index([‘名称’, ‘第一类型’, ‘第二类型’, ‘综合能力’, ‘生命点数’, ‘攻击强度’, ‘防御强度’, ‘特殊攻击强度’,
‘特殊防御强度’, ‘速度’, ‘世代数’, ‘传奇小精灵’],
dtype=‘object’)
7.查看第一类型的唯一值,有如下两种方法:
df['第一类型'].unique()
array([‘Grass’, ‘Fire’, ‘Water’, ‘Bug’, ‘Normal’, ‘Poison’, ‘Electric’,
‘Ground’, ‘Fairy’, ‘Fighting’, ‘Psychic’, ‘Rock’, ‘Ghost’, ‘Ice’,
‘Dragon’, ‘Dark’, ‘Steel’, ‘Flying’], dtype=object)
df['第一类型'].value_counts()
Water 112
Normal 98
Grass 70
Bug 69
Psychic 57
…
Steel 27
Fighting 27
Ice 24
Fairy 17
Flying 4
Name: 第一类型, Length: 18, dtype: int64
可以用以下方式将中间省略部分全部显示出来。
pd.set_option('display.max_rows',None)
df['第一类型'].value_counts()
Water 112
Normal 98
Grass 70
Bug 69
Psychic 57
Fire 52
Electric 44
Rock 44
Ghost 32
Dragon 32
Ground 32
Dark 31
Poison 28
Steel 27
Fighting 27
Ice 24
Fairy 17
Flying 4
Name: 第一类型, dtype: int64
8.使用df.loc[label]方法查看行标签为2、4小精灵的名称和综合能力。
df.loc[[2,4],['名称','综合能力']]
9.使用df.iloc[loc]方法查看行标签为5到10小精灵的名称和综合能力。
df.iloc[5:11,[0,3]]
10.通过切片方式查看df中前6个小精灵的数据。
df[:6]
11.查看攻击强度大于160的小精灵的所有数据。
df[df['攻击强度']>160]
12.查看传奇小精灵的数据,这里只展示前十行数据。
df[df['传奇小精灵']==True].head(10)
13.创建新列世代456,插入到df的最后一列,该列显示世代数为4、5和6的小精灵为True, 其他为False,随机选取10行数据进行展示。
df['世代数456']=df['世代数'].isin([4,5,6])
df.sample(10)