2021-03-31 python数据处理系统学习(十三)Pandas常用的数据结构
1、Series类-创建一个series序列
data通过列表、字典、array等创建
最终形式为:pandas.series(data,index,dtype,name)
import pandas as pd
import numpy as np
series1=pd.Series([2.8,3.01,8.99,8.59,5.18])
series1
Out[1]:
0 2.80
1 3.01
2 8.99
3 8.59
4 5.18
dtype: float64
type(series1)
Out[2]: pandas.core.series.Series
series1=pd.Series([2.8,3.01,8.99,8.59,5.18],index=['a','b','c','d','e'],name='This is a series')
series1
Out[3]:
a 2.80
b 3.01
c 8.99
d 8.59
e 5.18
Name: This is a series, dtype: float64
用array进行创建:
series2=pd.Series(np.array([2.8,3.01,8.99,8.59,5.18]),index=['a','b','c','d','e'])
series2
Out[5]:
a 2.80
b 3.01
c 8.99
d 8.59
e 5.18
dtype: float64
字典:
series3=pd.Series({'北京':2.8,'上海':3.01,'广东':8.99,'江苏':8.59,'浙江':5.18})
series3
Out[6]:
北京 2.80
上海 3.01
广东 8.99
江苏 8.59
浙江 5.18
dtype: float64
2、Series类-series的性质
2.1 values
series3.values
Out[7]: array([2.8 , 3.01, 8.99, 8.59, 5.18])
2.2 index
series3.index
Out[8]: Index(['北京', '上海', '广东', '江苏', '浙江'], dtype='object')
series3.index.values
Out[9]: array(['北京', '上海', '广东', '江苏', '浙江'], dtype=object)
2.3 dtypes
series3.dtypes
Out[10]: dtype('float64')
2.4 ndims
series3.ndim
Out[11]: 1
2.5读取指定数据
通过位置读取:
series3[0:3]
Out[12]:
北京 2.80
上海 3.01
广东 8.99
dtype: float64
通过标签读取:
series3['北京':'广东']
Out[13]:
北京 2.80
上海 3.01
广东 8.99
dtype: float64
2.6 append添加信息
series4=pd.Series({'四川':3.80,'重庆':2.01})
series3.append(series4)
Out[14]:
北京 2.80
上海 3.01
广东 8.99
江苏 8.59
浙江 5.18
四川 3.80
重庆 2.01
dtype: float64
2.7 改变元素的信息
series3['北京']=2.89
series3
Out[16]:
北京 2.89
上海 3.01
广东 8.99
江苏 8.59
浙江 5.18
dtype: float64
2.8 删除元素
series5=series3.append(series4)
series5.drop('四川')
Out[17]:
北京 2.89
上海 3.01
广东 8.99
江苏 8.59
浙江 5.18
重庆 2.01
dtype: float64
但是这种情况,原本的序列中元素并没有被删除,即只返回视图,并没有对元素进行操作,显示如下:
series5
Out[18]:
北京 2.89
上海 3.01
广东 8.99
江苏 8.59
浙江 5.18
四川 3.80
重庆 2.01
dtype: float64
但是如果用以下方法,则不仅对视图进行操作,还改变了元素:
series5.drop('四川',inplace=True)
series5
Out[19]:
北京 2.89
上海 3.01
广东 8.99
江苏 8.59
浙江 5.18
重庆 2.01
dtype: float64
删除两个元素:
series5=series3.append(series4)
series5.drop(['四川','重庆'],inplace=True)
series5
Out[23]:
北京 2.89
上海 3.01
广东 8.99
江苏 8.59
浙江 5.18
dtype: float64
3、DataFrame类-创建DataFrame
DataFrame既有行索引又有列索引,可以将Series看成其中的一行/一列
用列表创建:
list1=[['张三',23,'male'],['李四',24,'female'],['王二',26,'female']]
list1
Out[24]: [['张三', 23, 'male'], ['李四', 24, 'female'], ['王二', 26, 'female']]
df1=pd.DataFrame(list1,columns=['name','age','gender'])
df1
Out[26]:
name age gender
0 张三 23 male
1 李四 24 female
2 王二 26 female
用字典创建:
df2=pd.DataFrame({'name':['张三','李四','王二'],'age':[23,24,26],'gender':['male','female','female']})
df2
Out[27]:
name age gender
0 张三 23 male
1 李四 24 female
2 王二 26 female
用array创建:
array1=np.array(list1)
array1
df3=pd.DataFrame(array1,columns=['name','age','gender'],index=['a','b','c'])#index长度要和column的长度一样
df3
Out[28]:
name age gender
a 张三 23 male
b 李四 24 female
c 王二 26 female
4、DataFrame的性质
4.1 values
df3.values
Out[29]:
array([['张三', '23', 'male'],
['李四', '24', 'female'],
['王二', '26', 'female']], dtype=object)
结果会以数组的形式输出。
4.2 shape
df3.shape
Out[30]: (3, 3)
4.3dtypes
df3.dtypes
Out[31]:
name object
age object
gender object
dtype: object
df2.dtypes
Out[32]:
name object
age int64
gender object
dtype: object
4.4 将column输出
df2.columns
Out[33]: Index(['name', 'age', 'gender'], dtype='object')
df2.columns.tolist()
Out[34]: ['name', 'age', 'gender']
4.5 ndim和size
df2.ndim
Out[35]: 2
df2.size#输出的是元素个数
Out[36]: 9
4.6 输出index
df3.index
Out[39]: Index(['a', 'b', 'c'], dtype='object')
df3.index.tolist()
Out[40]: ['a', 'b', 'c']