Pandas数据结构
一、Series(序列)
简介
Series是一维数组,表格中的每一行或者每一列结构都可以看成是Series,又行索引和数值构成。
1、Series的创建
(1)利用数组进行创建
#1)使用默认索引进行创建
#导入相关的包/库
from pandas import Series
#创建Series,使用默认索引进行创建
p = Series(data=['zhang','li','wang','zhao'])
p

#2)使用自定义索引进行创建
#导入相关的包/库
from pandas import Series
#创建Series,使用默认索引进行创建
p1 = Series(data=['zhang','li','wang','zhao'],
index=['a','b','c','d'])
p1

#3)创建多层索引的Series
#导入相关的包/库
from pandas import Series
#创建Series,使用默认索引进行创建
p2 = Series(data=['zhang','li','wang','zhao'],
index=[['a','b','c','d'],
[3,4,6,5]])
p2

(2)利用字典进行创建
from pandas import Series
dic = {
'排名':'1',
'name':'zhangsan',
'age':23,
'简介':'我是张三'
}
p3=Series(data=dic)
p3

2、Series的常用属性
# 1)、values属性获取数据的值 返回的是list类型
p3.values

# 2)、index属性 获取索引的值 返回index类型
p3.index

# tolist()进行转换成列表
p3.index.tolist()

# 3)、items 获取每对索引和值 返回的是zip类型,使用list(series.items())转换成列表
p3.items()

list(p3.items())

3、Series的取值
(1)单层索引取值
# 1)、索引下标取值
p1

p1[0]

2)、索引切片取值
p1[1:3]

(2)多层索引取值
import pandas as pd
data = [1,2,3,4,5,6]
index = [['张三','张三','李四','李四','王五','王五'],
['期中','期末','期中','期末','期中','期末']]
series = pd.Series(data=data,index=index)
series

series['张三','期中']

series[:,'期中']

# ~~series('期中')~~ 会报错,因为不能使用最外层以外的层级进行直接取值
4、Series的遍历
#1)、 遍历Series的值
for value in series:
print(value)

#2)、 遍历并拿到index数据
for value in series.keys():
print(value)

# 3)、遍历每对索引和数据
for value in series.items():
print(value)

二、DataFrame(数据帧)
简介
DataFrame是一种二维数据结构,是按照行和列进行排列,所以包括行索引、列索引和值。
1、DataFrame的创建
(1)利用数组进行创建
# 1)、单层索引的创建
#导包
from pandas import DataFrame
lol_list = [
['上单','theshy',20],
['打野','theshy',21],
['中单','theshy',22]
]
df = DataFrame(data=lol_list,index=('a','b','c'),columns=['位置','ID号','年龄'])
df

# 2)、多层索引的创建
# 导包
import pandas as pd
import numpy as np
#构造数据
data = np.random.randint(0,100,size=(6,3))
names = ['张三','李四','王五']
exam = ['期中','期末']
column = ['Java','Web','Python']
index = pd.MultiIndex.from_product([names,exam])
df1 = pd.DataFrame(data =data,index=index,columns=column)
df1

(2)利用字典数据进行创建
from pandas import DataFrame
dic={
'位置':['上单','打野','中单'],
'ID号':['t1','t2','t3'],
'年龄':[20,21,22]
}
df2=DataFrame(data=dic)
df2

2、DataFrame数据常用属性
# 1)、数据常用属性 获取行索引列表df.index.tolist()
df

df.index.tolist()

# 2)、获取列索引列表df.columns.tolist()
df.columns.tolist()

# 3)、获取头尾部数据df.head() / tail()
df.head(2)

df.tail(2)

3、DataFrame的取值(挺重要的哦!)
(1)单层索引的取值
先获取一个单层索引数据帧
df

#1)、获取某一列
df['ID号']

#2)、获取某一列
df[0:1]

#3)获取多行多列
df[0:2][['位置','ID号']]

(2)多层索引的取值
# loc[]和iloc[]语法
loc[]基于标签索引进行取值,iloc[]基于位置索引进行取值
下面用loc[]和iloc[]进行取值获得相同的结果
df1

#1)、获取某行多列
df1.loc['张三','期中']

df1.iloc[0,:]

# 2)、获取多行某列
df1.loc[:,'Java']

df1.iloc[:,0]

#3)、获取指定行和列
忘记先描述一下切片语法[起始位置:结束位置:步长]
多行多列进行取值时候索引以逗号隔开 [行索引,列索引]
df1.loc[('张三','期中'),'Java']

df1.iloc[0,0]

#4)、获取指定多行和多列
df1.loc[('张三','期中'):('李四','期中'),['Java','Web']]

df1.iloc[0:3,0:2]

4、DataFrame的遍历
# 1)、 按行遍历iterrows
df

for index,row_data in df.iterrows():
print(index,row_data)

# 2)、按列遍历iteritems
for column,col_data in df.iteritems():
print(column,col_data)

1496



被折叠的 条评论
为什么被折叠?



