安装pandas
命令:pip install pandas
查看是否安装包: pip list
pandas数据类型
Series是由相同数据类型组成的一维数组,大小不可变。
DataFrame:二维的表格型数据结构,数据帧(DataFrame)是大小可变的数据结构,每列可以是不同的数据类型(整型、字符串、布尔值等)
面板(Panel)可以由不同的数据类型构成的三维数据结构,Panel是DataFrame的容器
一维数据结构:Series对象
#查看列索引
print(df2.columns)
#查看行索引
print(df2.index)
使用Pandas.Series
#pandas.Series(data,index,dtype,copy)
#data:数据,可以是序列类型,可以是int
#index:索引值必须是唯一的,与data的长度相同,默认为np.arange(n)
#dtype:数据类型
#cope:是否复制数据,默认为False
#打印左侧为索引,右侧为数据
import pandas as pd
import numpy as np
a = np.array([1,2,3,4,5])
s1 = pd.Series(a,index=['a','b','c','d','e'],copy = False)
#如果全部是int类型,那么打印s1会显示是int类型
s1 = pd.Series([1,2,3,4]) #dtype: int64
print(s1)
#如果什么数据类型都存在,那么打印s1会显示object类型的
s1 = pd.Series([1,"a",0.5,["张三","李四"]])#dtype: object
print(s1)
s1 = pd.Series([1,"a",0.5,["张三","李四"]],index=['a','b','c','d'])
s1 = pd.Series([1,2,3,4],index=['a','b','c','d'],dtype=np.float32)
"""
copy=True后,数据x不会改变,数据s1会改变
copy=False,数据x会改变,数据s1会改变
"""
x=np.array([10,20,30,40])
s1 = pd.Series(x,index=['a','b','c','d'],copy=True)
s1['a']=100
print(s1)
print(x)
从ndarray创建一个Series
x=np.array([10,20,30,40])
s1 = pd.Series(x)
s1 = pd.Series(x,index=['a','b','c','d'])
print(s1)
从字典创建一个Series
由于我们的Series有索引有数据,和我们的字典很像,字典是有key和vaule
#利用数据是字典的列表创建
#1. k变成列标签
#2.没有数据的用NaN
#a是索引 100数据
x={'a':100,'b':200,'c':300,'d':400}
s1 = pd.Series(x)
#设置索引
s1 = pd.Series(x,index=['a','b','c','d'])
#如果设置的索引位置换一下呢,数据也会跟着换
s1 = pd.Series(x,index=['a','c','d','b'])
#如果设置的索引,在字典中不存在呢,为nan
s1 = pd.Series(x,index=['a','b','e','f'])
print(s1)
单个索引获取数据
语法:s1[index] 获取单个数据
#可以使用默认索引,也可以使用自定义索引
s1 = pd.Series([1,"a",0.5,["张三","李四"]],index=['a','b','c','d'])
print(s1[0])
print(s1['a'])
多个索引获取数据
语法:
s1[list] 获取索引中的数据
s1[index1:index2] 获取从第一个索引到第二个索引的数据,左开右闭
Series对象的使用
属性和方法 | 说明 |
---|---|
axes | 返回Series索引列表 |
dtype | 返回Series的数据类型 |
empty | 判断Series是否为空,如果为空,则返回True |
ndim | 返回基础数据的位数,默认为:1 |
size | 返回基础数据中的元素个数 |
values | 将Series作为ndarray返回 |
head() | 返回前n行 |
tail() | 返回最后n行 |
| T | 转置行和列 |
| ------ | -------------------------------------------------- |
| axes | 返回一个列,行轴标签和列轴标签作为唯一的成员 |
| dtypes | 返回此对象中的数据类型 |
| empty | 如果DataFrame为空,则返回为True,任何轴的长度都为0 |
| ndim | 数组维度大小,默认为2维 |
| shape | 返回表示DataFrame的维度的元组 |
| size | DataFrame中的元素个数 |
| values | 将DataFrame中的实际数据作为NDarray返回 |
| head() | 返回开头n行 |
| tail() | 返回最后n行
S3=pd.Series(['大黄','狗蛋','铁蛋','富贵'],
index=['row1','row2','row3','row4'])
S4=pd.Series([10,10,10,np.NaN],
index=['row1','row2','row3','row4'])
x1={
'name':S3,
'age':S4,
}
df2 = pd.DataFrame(x1)
print(df2)
print('------cumprod-----累计乘积------------')
print(df2['age'].cumprod())
#print(df2)
#print('-----head-----------返回头几行---------')
#print(df2.head(2))
#print('-----tail-----------返回最后几行 ---------')
#print(df2.tail(2))
#print('-----values--把真正的数据转换成ndarray的形式输出-----')
#print(df2.values)
#print(type(df2.values))#<class 'numpy.ndarray'>
#print('-----size--------(元素个数)-----------')
#print(df2.size)#8
#print('-----shape--------(行和列)-----------')
#print(df2.shape)#(4, 2)
#print('-----ndim--------维度数-----------')
#print(df2.ndim)#2
#print('-----empty-------------------')
#print(df2.empty)#False
#print('-----dypes--------每一列的数据类型-----------')
#print(df2.dtypes)
#name object
#age int64
#dtype: object
#print('------axes--------获取行和列的索引-----------')
#print(df2.axes)#[Index(['row1', 'row2', 'row3', 'row4'], dtype='object'), Index(['name', 'age'], dtype='object')]
#print('--------------T--------转置----------------')
#print(df2.T)
创建空DataFrame对象
pandas.DataFrame( data, index, columns, dtype, copy)
data 支持多种数据类型,如:ndarray,series,map,lists,dict,constant和另一个DataFrame。
index 行标签,如果没有传递索引值,默认值为0,1,2,3,4.......
columns 列标签,如果没有传递索引值,默认值为0,1,2,3,4.......
dtype 每列的数据类型
copy 是否复制数据,默认值为False
df = pd.DataFrame()
print (df)
利用列表创建
#利用单层list
#数据变成行数据
#利用单层list
#数据变成行数据
import pandas as pd
import numpy as np
from pandas.core.frame import DataFrame
x=[1,2,3,4,5]
df2=pd.DataFrame(x)
print(df2)
#利用双层list
#如果是True,那么x数据不改
#利用双层list
x=[
['zs',20],
['ls',30],
['ch',40]
]
#df3=pd.DataFrame(x,columns=['name','age'])
#如果是True,那么x数据不改变
df3= pd.DataFrame(x,columns= ['name','age'],copy=True)
df3['age'] = 100
print(df3)
print(x)
#利用数据是字典的列表创建
#1. k变成列标签
#2.没有数据的用NaN
#index 行索引 columns列索引 NaN代表为空值利用双层list
x=[
{'a':20,'b':30},
{'a':100,'b':200,'c':400}
]
df4=pd.DataFrame(x)
print(df4)
#index 行索引 columns列索引 NaN代表为空值利用双层list
df4 = pd.DataFrame(x)
print(df4)
df4 = pd.DataFrame(x,index=["first","second"])
print(df4)
#如果没有c,就会默认是nun
df4 = pd.DataFrame(x,index=["first","second"],columns=['a','c'])
print(df4)
利用字典创建
#利用字典创建DataFrame
#a、b是列索引,一定要设置行索引(index),否则报错# 字典里面的v是列表类型创建DataFrame
#利用字典创建DataFrame
#a、b是列索引,一定要设置行索引(index),否则报错
x={'馒头':1,'包子':1.5,'豆浆':2,'倔强面':16}
df1=pd.DataFrame(x,index=['价格'])
#print(df1)
# 字典里面的v是列表类型创建DataFrame
#那么默认列索引是name和age
x={
'食品':['馒头','大米','包子'],
'价格':[1,2,1.5]
}
df2=pd.Data