数据分析(四)

之前我们学习了numpy,pandas。现在能自己引入数据分析的三剑客不?试一试吧,想不起来,就要看看前面的呦。
来吧,我们一起导入一下吧!

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import matplotlib as plt

导入包之后,现在我们就要进行下面的步骤了,想一想要怎样产生随机的一个二维数组呢?

ndarr = np.random.randint(0,10,size=(5,6))
ndarr

OK,下面我们生成一个对应的表格。

# data=None, index=None
s = Series(data=[1,2,3],index=list('abc'))
s

小伙伴们,你们知道显性索引和隐性索引不?

# s.loc  # 显式索引
# s.iloc  # 隐式索引
# s.loc['a']
# s.iloc[0]
# s.loc[['a','c']]  # 同一个维度 同时取多个内容 要用中括号 括起来
# s.iloc[[0,2]]
s.loc['a':'c']  # 显式 切片 开始和结束位置都包括
s.iloc[:]
s.iloc[0:2]  # 隐式 切片 结束位置是不包括的
s.iloc[0:3]
s.iloc[0:]

下面,我们就一起来生成一个成绩表

# 成绩表
# chinese math english python
# 临风 班长 孙武空 

# data=None, index=None, columns=None
d = np.random.randint(0,100,size=(3,4))
d
i = ['临风','班长','孙武空']  # 行索引
c = ['chinese','math','english','python']  # 列索引

OK,做到这里,我们还没做完,这只是展示出了数据,我么还要做成表格形式,这我们要怎么做呢?想想我们之前引入了什么?没错,就是DataFrame。

df = DataFrame(d,i,c)
df

现在,我们思考一个问题, 行和列 哪个 更重要呢?
行 每一行相当于一个样本 ,列 每一列是一个特征 ,所以列更重要。
1)对列进行索引:通过类似字典的方式、通过属性的方式
按照列名进行索引,获取到一个Series
df['math']
df.math
2) 对行进行索引:使用.loc[]加index来进行行索引、使用.iloc[]加整数来进行行索引,同样返回一个Series,index为原来的columns

# df['临风']  # 直接往中括号中传入 行索引 找不到
df.临风
df.loc['临风']  # 显式索引
df.iloc[0]  # 隐式所引进

上面的代码,第一个是错的。大家可以都试一下,注意一行一行的运行。
总结:对 列 进行 索引 df[‘列名’] df.列名 得到的是Series,对 行 进行 索引 df.loc[‘行名’] df.iloc[行序号] 得到的是Series
3) 对元素索引的方法

  • 使用列索引
  • 使用行索引
  • 使用values属性(二维numpy数组)
df.python.loc['班长']  # 先按列找 找到的是Series 在对Series进行索引
df.loc['班长'].iloc[-1]

df的loc或者iloc提供了更加优雅的方式

df.loc['班长','python']
df.iloc[1,-1]

如果DataFrame的索引记不清 可以直接通过values然后去定位值

df.values  

【注意】 直接使用中括号时:
索引表示的是列索引
切片表示的是行切片

# 直接使用用括号 索引是列索引 切片是行切片
# 最简单的方式 对列进行切片
df.values[:,1:]

ok,辛苦码字,感觉不错的点个赞吧,明天会继续更新。

猜你喜欢

转载自blog.csdn.net/m0_37906230/article/details/84073324