数据分析08章-dataframe第3-4节

03dataFrame的索引

pandas取行或者列的注意点:

方括号里写数组,表示取行,对行进行操作
方括号里写字符串,表示取列的索引,对列进行操作
pandas取行:df[:2]
pandas取列:df[“age”]
pandas排序:df.sort_values(by=‘tel’)
对于一些同时取多行多列的操作,采用*loc和iloc
df.loc与df.iloc的区别:loc通过标签获取行数据;iloc通过位置索引获取行数据

缺损值判断:
处理方式:
1.删除:df.dropna(axis=0)#只要是nan就删除哪一行
2.填充df.fillna(df.mean())
#只填充某一列
df[‘age’].fillna(df[‘age’].mean())

对全0项先赋nan然后再作处理
df[df==0]=np.nan

其他注意事项:
df[‘info’].str.split(’/’).tolist()#info中的字符串(str)用/分离
在这里插入图片描述

import pandas as pd
t = [{'name':'xiaoming','age':12,'tel':10010},{'name':'xiaoyue','tel':10086},{'name':'xiaogang','age':32}]
t

[{‘age’: 12, ‘name’: ‘xiaoming’, ‘tel’: 10010},
{‘name’: ‘xiaoyue’, ‘tel’: 10086},
{‘age’: 32, ‘name’: ‘xiaogang’}]

df = pd.DataFrame(t)
df

在这里插入图片描述

df[:2]

在这里插入图片描述

df[:2]['age']

0 12.0
1 NaN
Name: age, dtype: float64

df['age']

0 12.0
1 NaN
2 32.0
Name: age, dtype: float64

df[['name']]

在这里插入图片描述

type(df['age'])#一维series

pandas.core.series.Series

type(df[['name']]) #二维DataFrame

pandas.core.frame.DataFrame
关于dataframe:
只有一列是Series
多列是DataFrame


对于一些同时取多行多列的操作,采用loc和iloc:
在这里插入图片描述

import numpy as np
import pandas as pd
t3 = pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=list('wxyz'))
t3

在这里插入图片描述

t3.loc['a','z'] #取a行,z列的数据

3

type(t3.loc['a','z'])

numpy.int32

t3.loc['a']

w 0
x 1
y 2
z 3
Name: a, dtype: int32

t3.loc[:,'x']#单独的df.loc['w']是没用的,需要有行才行,单独只有列是没用的,会报错

a 1
b 5
c 9
Name: x, dtype: int32

t3.loc['a',:] #与上式效果一样

w 0
x 1
y 2
z 3
Name: a, dtype: int32

t3.loc[:,'y']

a 2
b 6
c 10
Name: y, dtype: int32

type(t3.loc[:,'y'])

pandas.core.series.Series

t3.loc[['a','c']]#取多行

在这里插入图片描述

t3.loc[['a','c'],:]#取多行	--与上式效果一样

在这里插入图片描述

t3.loc[:,['x','y']]#取多列

在这里插入图片描述

t3.loc[['a','b'],['w','y']]#取多行多列

在这里插入图片描述
在这里插入图片描述

t3.iloc[1,:]#取第一行

w 4
x 5
y 6
z 7
Name: b, dtype: int32

t3.iloc[:,2]#取第2列

a 2
b 6
c 10
Name: y, dtype: int32

t3

在这里插入图片描述

t3.iloc[:,[2,1]]#取第2,1列,并按将第2列排在前面

在这里插入图片描述

t3.iloc[[1,2],[2,1]]#取多行多列

在这里插入图片描述

t3.iloc[1:,:2]

在这里插入图片描述
t3.iloc[1:,:2]=30
t3
在这里插入图片描述

t3.iloc[1:,:2] = np.nan
t3

d
在这里插入图片描述

注意 df.loc和df.iloc的另一个区别:

t3

在这里插入图片描述

t3.loc[:'c',:'y']  #包括了c行和y列

在这里插入图片描述

t3.iloc[:2,:2]

在这里插入图片描述

04bool索引和缺失数据的处理
在这里插入图片描述
在这里插入图片描述

import numpy as np
import pandas as pd
t = np.arange(500,1000,20).reshape(5,5)
t

array([[500, 520, 540, 560, 580],
[600, 620, 640, 660, 680],
[700, 720, 740, 760, 780],
[800, 820, 840, 860, 880],
[900, 920, 940, 960, 980]])

df = pd.DataFrame(t,index = list('abcde'),columns = list('wxyzq'))
df

在这里插入图片描述

df[(df['w']>700)&(df['y']<900)]

在这里插入图片描述

df[(df['w']>700)|(df['y']<600)]

在这里插入图片描述

df['info'] =[ '黄荣/爱你/的人/是我/真的啦','黄荣/爱你/的人/是我','黄荣/爱你/的人/','黄荣/爱你/的人','黄荣/爱你']
df

在这里插入图片描述

df['info'].str.split('/')

a [黄荣, 爱你, 的人, 是我, 真的啦]
b [黄荣, 爱你, 的人, 是我]
c [黄荣, 爱你, 的人, ]
d [黄荣, 爱你, 的人]
e [黄荣, 爱你]
Name: info, dtype: object

df['info'].str.split('/').tolist()#info中的字符串(str)用/分离

[[‘黄荣’, ‘爱你’, ‘的人’, ‘是我’, ‘真的啦’],
[‘黄荣’, ‘爱你’, ‘的人’, ‘是我’],
[‘黄荣’, ‘爱你’, ‘的人’, ‘’],
[‘黄荣’, ‘爱你’, ‘的人’],
[‘黄荣’, ‘爱你’]]

print(df['info'].str)  #是Seris

<pandas.core.strings.StringMethods object at 0x000000000893AC18>

pandas处理缺失值得做法:
在这里插入图片描述

import pandas as pd
t = [{'name':'xiaoming','age':12,'tel':10010},{'name':'xiaoyue','tel':10086},{'name':'xiaogang','age':32}]
df = pd.DataFrame(t)
df

在这里插入图片描述

pd.isnull(df)

在这里插入图片描述

pd.notnull(df)

在这里插入图片描述

df[pd.notnull(df['age'])]  #获得age非0的行

在这里插入图片描述

pd.notnull(df['age'])

0 True
1 False
2 True
Name: age, dtype: bool

1.缺损值处理方式1—删除0那一行

df.dropna(axis=0)#只要是nan就删除哪一行

在这里插入图片描述

df.dropna(axis=0,how='any')#只要是nan就删除哪一行

在这里插入图片描述

df.dropna(axis=0,how='all')#全部都是nan才删除哪一行

在这里插入图片描述

df.dropna(axis=0,how='any',inplace=True)#inplace表示是否更换df内的数值,变更df
df

在这里插入图片描述

2.处理数据方式2----填充数据

df = pd.DataFrame(t)
df

在这里插入图片描述

df.fillna(100)

在这里插入图片描述

df.fillna(df.mean())

在这里插入图片描述

df.mean()

age 22.0
tel 10048.0
dtype: float64

#只填充某一列

df['age'].fillna(df['age'].mean())

0 12.0
1 22.0
2 32.0
Name: age, dtype: float64

df

在这里插入图片描述

df['age'] = df['age'].fillna(df['age'].mean())
df

在这里插入图片描述

df['age'][1]=np.nan
df

在这里插入图片描述

df["age"].mean()

22.0

df['age'][2]=0
df

在这里插入图片描述

df[df==0]=np.nan
df

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值