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'>

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



