Pandas的数据结构

Pandas的数据结构

  • dataframe是一个二维或多维的数据,Series是一个一维的数据
  •  二维降维成一维数据类似于python中的字典,这样处理数据比二维数据的datafram更加快速和便捷。

1. Series

Series是一种类似于一维数组的对象,它由一组数据(不同数据类型)以及一组与之相关的数据标签(即索引组成)

1.1 仅有数据列表即可产生最简单的Series

import pandas as pd
import numpy as np

s1 = pd.Series([1,'a',5,2,7])
#左侧为索引,右侧是数据
print(s1)
0    1
1    a
2    5
3    2
4    7
dtype: object
#获取索引
print(s1.index)
RangeIndex(start=0, stop=5, step=1)
#获取数据
print(s1.values)
[1 'a' 5 2 7]

1.2 创建一个具有标签索引的Series

s2 = pd.Series([1,'a',5.2,7],index=['d','b','a','c'])
print(s2)
[1 'a' 5 2 7]
d      1
b      a
a    5.2
c      7
dtype: object
print(s2.index)
Index(['d', 'b', 'a', 'c'], dtype='object')

1.3:使用Python字典创建Series

sdata = {'ohio':35000,'taxes':72000,'orange':16000,'utran':5000}
s3 = pd.Series(sdata)
print(s3)
ohio      35000
taxes     72000
orange    16000
utran      5000
dtype: int64

1.4:根据标签索引查询数据,类似phthon的字典dict

s2 = pd.Series([1,'a',5.2,7],index=['d','b','a','c'])
print(s2)
d      1
b      a
a    5.2
c      7
dtype: object

print(s2['a'])
5.2
#返回一个索引的数据
print(type(s2['a']))
<class 'float'>
#返回两个索引的数据
print(s2[['b','a']])
b      a
a    5.2
dtype: object
#查看这两个数据的类型
print(type(s2[['b','a']]))
<class 'pandas.core.series.Series'>

2.Dataframe

dataframe是一个表格型的数据结构

  • 每列可以是不同的值的类型(数值,字符串,布尔值等)
  • 即有行索引Index,也有列索引columns
  • 可以看做由Series组成的字典

创建dataframe最常用的方法,如读取纯文本文件,excel或my sql数据库

2.1 根据多个字典序列创建dataframe

data = {'state':['jack','tome','jerry','lily','KFC'],'year':[2000,2001,2002,2003,2025],'pop':[1.5,1.7,3.6,2.4,2.9]}
df = pd.DataFrame(data)
print(df)   
state  year  pop
0   jack  2000  1.5
1   tome  2001  1.7
2  jerry  2002  3.6
3   lily  2003  2.4
4    KFC  2025  2.9
print(df.dtypes)
state     object
year       int64
pop      float64
dtype: object
print(df.columns)
Index(['state', 'year', 'pop'], dtype='object')
print(df.index)
RangeIndex(start=0, stop=5, step=1)

3. 从dataframe中查询出Series

  • 如果只是查询一行,一列,返回的是pd.Series
  • 如果查询多行,多列,返回的是pd.DataFreme
data = {'state':['jack','tome','jerry','lily','KFC'],'year':[2000,2001,2002,2003,2025],'pop':[1.5,1.7,3.6,2.4,2.9]}
df = pd.DataFrame(data)

3.1 查询一列,结果是一个pd.Series

print(df['year'])
0    2000
1    2001
2    2002
3    2003
4    2025
Name: year, dtype: int64
print(type(df['year']))
<class 'pandas.core.series.Series'>

3.2 查询多列,结果是一个pd.Dataframe

print([['year','pop']])
[['year', 'pop']]
print(type(df[['year','pop']]))
<class 'pandas.core.frame.DataFrame'>

3.3 查询一行,结果是一个pd.Series

data = {'state':['jack','tome','jerry','lily','KFC'],'year':[2000,2001,2002,2003,2025],'pop':[1.5,1.7,3.6,2.4,2.9]}
df = pd.DataFrame(data)
print(df)
   state  year  pop
0   jack  2000  1.5
1   tome  2001  1.7
2  jerry  2002  3.6
3   lily  2003  2.4
4    KFC  2025  2.9
print(df.loc[1])
state    tome
year     2001
pop       1.7
Name: 1, dtype: object
print(type(df.loc[1]))
<class 'pandas.core.series.Series'>

3.4 查询多行,结果是一个pd.DataFrame

data = {'state':['jack','tome','jerry','lily','KFC'],'year':[2000,2001,2002,2003,2025],'pop':[1.5,1.7,3.6,2.4,2.9]}
df = pd.DataFrame(data)

print(df)   
state  year  pop
0   jack  2000  1.5
1   tome  2001  1.7
2  jerry  2002  3.6
3   lily  2003  2.4
4    KFC  2025  2.9
print(df.loc[1:3])   
state  year  pop
1   tome  2001  1.7
2  jerry  2002  3.6
3   lily  2003  2.4
print(type(df.loc[1:3]))
<class 'pandas.core.frame.DataFrame'>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值