Pandas库主要提供了三种数据结构:
(1)Series:带标签的一维数据
(2)DataFrame:带标签且大小可变的二维表结构
(3)Panel:带标签且大小可变的三维数据
Pandas 数据结构就像是低维数据的容器。比如,DataFrame 是 Series 的容器,Series 则是标量的容器。使用这种方式,可以在容器中以字典的形式插入或删除对象。
import pandas as pd
import numpy as np
# 以字典形式给出标签和一维数据
d = {'a': 1, 'b': 2, 'c': 3}
ser=pd.Series(d)
# data:传输数据 index:传输标签
a=np.arange(0,3)
d=['x','y','z']
ser=pd.Series(data=a,index=d)
import pandas as pd
import numpy as np
# index是行标签 columns是列标签 默认都是从0开始的正数索引
d=np.arange(1,10).reshape(3,3)
a=['A','B','C']
e=['一','二','三']
df1=pd.DataFrame(data=d,index=a)
df2=pd.DataFrame(data=d,index=a)
df=pd.DataFrame(data=d,index=e,columns=a)
"""
df
A B C
一 1 2 3
二 4 5 6
三 7 8 9
"""
1、查看头部与尾部数据
# head(n):从头部开始,选取n行数据
print(df.head(1))
# tail(n):从尾部开始,选取n行数据
print(df.tail(2))
2、显示索引与列名
# 索引 行标签
df.index
"""
Index(['一', '二', '三'], dtype='object')
"""
# 列名 列标签
df.columns
"""
Index(['A', 'B', 'C'], dtype='object')
"""
3、to_numpy():输出不包含行索引和列标签的numpy对象
df.to_numpy()
4、describe():快速查看数据的统计摘要
df.describe()
"""
A B C
count 3.0 3.0 3.0
mean 4.0 5.0 6.0
std 3.0 3.0 3.0
min 1.0 2.0 3.0
25% 2.5 3.5 4.5
50% 4.0 5.0 6.0
75% 5.5 6.5 7.5
max 7.0 8.0 9.0
"""
print(df['A'])
"""
一 1
二 4
三 7
Name: A, dtype: int32
"""
print(df[0:1])
"""
A B C
一 1 2 3
"""
print(df['二':'三'])
"""
A B C
二 4 5 6
三 7 8 9
"""
用DataFrame对象的loc方法,同时按列标签和行切片索引
print(df.loc['二':'三','A'])
"""
二 4
三 7
Name: A, dtype: int32
"""
用DataFrame对象的iloc方法,用整数or整数数组按位置索引
print(df.iloc[1,[1,2]])
"""
B 5
C 6
Name: 二, dtype: int32
"""
print(df.iloc[:,[0,2]])
"""
A C
一 1 3
二 4 6
三 7 9
"""
print(df[df.A>5])
"""
A B C
三 7 8 9
"""
print(df[df>5])
"""
A B C
一 NaN NaN NaN
二 NaN NaN 6.0
三 7.0 8.0 9.0
"""
# isin方法
print(df[df.isin([4,9])])
# 将df写入csv格式文件
df.to_csv('文件名.csv')
#读取
pd.read_csv('文件名.csv')
同cvs,有to_csv
和read_csv
concat()函数用于连接Pandas对象。
列标签相同的话,起到一个上下行拼接的效果。列标签不同的话,会变成列拼接,NAN缺失值会补全数据表。
import pandas as pd
import numpy as np
d=np.arange(1,10).reshape(3,3)
a=['A','B','C']
e=['一','二','三']
df=pd.DataFrame(data=d,index=e,columns=a)
df1=pd.DataFrame(data=np.random.rand(3,3),index=e,columns=a)
print(pd.concat([df,df1]))
"""
A B C
一 1.000000 2.000000 3.000000
二 4.000000 5.000000 6.000000
三 7.000000 8.000000 9.000000
一 0.970790 0.092893 0.438776
二 0.580138 0.996153 0.698677
三 0.554084 0.640035 0.574166
"""
d=np.arange(1,10).reshape(3,3)
a=['A','B','C']
e=['一','二','三']
df=pd.DataFrame(data=d,index=e,columns=a)
df1=pd.DataFrame(data=np.random.rand(3,4),index=e)
print(pd.concat([df,df1]))
"""
A B C 0 1 2 3
一 1.0 2.0 3.0 NaN NaN NaN NaN
二 4.0 5.0 6.0 NaN NaN NaN NaN
三 7.0 8.0 9.0 NaN NaN NaN NaN
一 NaN NaN NaN 0.286544 0.470042 0.229887 0.323514
二 NaN NaN NaN 0.475214 0.994036 0.724422 0.788663
三 NaN NaN NaN 0.231405 0.785781 0.537038 0.576568
"""
跟SQL语句中的join函数一个效果
import pandas as pd
import numpy as np
left = pd.DataFrame({'key': ['foo', 'foo'], 'lval': [1, 2]})
right = pd.DataFrame({'key': ['foo', 'foo'], 'rval': [4, 5]})
df=pd.merge(left,right)
print(df)
"""
key lval rval
0 foo 1 4
1 foo 1 5
2 foo 2 4
3 foo 2 5
"""