1. Series 使用
import pandas as pd
import numpy as np
s = pd.Series([1,2,3],index=('a','b','c'))
s
出输:
a 1
b 2
c 3
dtype: int64
s = pd.Series({'A':1,'B':2,'C':3})
s
出输:
a 1
b 2
c 3
dtype: int64
s = pd.Series(1,index=('a','b','c'))
s
出输:
a 1
b 1
c 1
dtype: int64
2. pandas:索引
s = pd.Series((1,2,3),index=('a','b','c'))
# loc 用key来获取
s.loc['b']
# 2
# iloc用索引来获取
s.iloc[2]
# 3
- pandas:数据对齐,相加
s1 = pd.Series(data=[1,2,3], index=['a','b','c'])
s2 = pd.Series(data=[9,8,7],index=['b','c','d'])
s3 = s1.add(s2,fill_value=0)
s3
出输:
a 1.0
b 11.0
c 11.0
d 7.0
dtype: float64
s3 = s1 + s2
s3
出输:
a NaN
b 11.0
c 11.0
d NaN
dtype: float64
# dropna() 过滤掉值为nan的行
s3.dropna()
出输:
b 11.0
c 11.0
dtype: float64
# fillna() 填充缺失数据
s3.fillna(0)
出输:
a 0.0
b 11.0
c 11.0
d 0.0
dtype: float64
# 返回布尔数组
s3.isnull()
出输:
a True
b False
c False
d True
dtype: bool
# 返回布尔数组
s3.notnull()
出输:
a False
b True
c True
d False
dtype: bool
返回非空数组
# s3[s3.notnull()]
出输:
b 11.0
c 11.0
dtype: float64
3. pandas:DataFrame
dataframe 是一个表格型的数据结构,含有一组有序的列
nps = np.random.randint(2,34,size=[3,4])
pd.DataFrame(data=nps)
输出:
0 1 2 3
0 19 11 25 3
1 18 2 19 33
2 17 26 7 25
pd.DataFrame({'a':[1,2,3],'b':[3,4,5]})
a b
0 1 3
1 2 4
2 3 5
pd.DataFrame({'A':[1,2,3],'B':[3,4,5]},index=['a1','a2','a3'])
A B
a1 1 3
a2 2 4
a3 3 5
# 数据保存到本地
pds.to_csv('./11.csv')
#本地读取 pd是pandas
pfs = pd.read_csv('./11.csv')
pfs
Unnamed: 0 A B
0 a1 1 3
1 a2 2 4
2 a3 3 5
# 行列转换 ,转置
pfs.T
0 1 2
Unnamed: 0 a1 a2 a3
A 1 2 3
B 3 4 5
#列索引
# pfs.columns
出输:
Index(['Unnamed: 0', 'A', 'B'], dtype='object')
# 获取值数组
pfs.values
出输:
array([['a1', 1, 3],
['a2', 2, 4],
['a3', 3, 5]], dtype=object)
# 获取快速统计
pfs.describe()
出输:
A B
count 3.0 3.0
mean 2.0 4.0
std 1.0 1.0
min 1.0 3.0
25% 1.5 3.5
50% 2.0 4.0
75% 2.5 4.5
max 3.0 5.0
pandas:dataframe索引和切片
arr= np.random.randint(1,100,size=[4,5])
parr = pd.DataFrame(arr)
parr
出输:
0 1 2 3 4
0 37 44 20 4 11
1 67 63 92 78 86
2 94 64 10 74 89
3 83 97 56 10 30
切片:
parr[2][1]
# 92
切片:
parr.iloc[2]
0 94
1 64
2 10
3 74
4 89
Name: 2, dtype: int64
切片:
parr.loc[0]
0 37
1 44
2 20
3 4
4 11
Name: 0, dtype: int64
# 切出两行
parr[1:3]
0 1 2 3 4
1 67 63 92 78 86
2 94 64 10 74 89
# 切出某些元素
parr[1:3][[1,2]]
1 2
1 63 92
2 64 10
常用的一些切片:
通过标签获取:
df['A']
df[['A', 'B']]
df['A'][0]
df[0:10][['A', 'C']]
df.loc[:,['A','B']]
df.loc[:,'A':'C']
df.loc[0,'A']
df.loc[0:10,['A','C']]
通过位置获取:
df.iloc[3]
df.iloc[3,3]
df.iloc[0:3,4:6]
df.iloc[1:5,:]
df.iloc[[1,2,4],[0,3]]
通过布尔值过滤:
df[df['A']>0]
df[df['A'].isin([1,3,5])]
df[df<0] = 0
5. pandas:DataFrame数据对齐与缺失数据
DataFrame对象在运算时,同样会进行数据对齐,行索引与列索引分别对齐。 结果的行索引与列索引分别为两个操作数的行索引与列索引的并集。
DataFrame处理缺失数据的相关方法:
dropna(axis=0,how='any',…)
fillna()
isnull()
notnull()|
- pandas:其他常用方法
pandas常用方法(适用Series和DataFrame):
mean(axis=0,skipna=False) #均值
sum(axis=1) #求和
sort_index(axis, …, ascending) 按行或列索引排序
sort_values(by, axis, ascending) 按值排序
NumPy的通用函数同样适用于pandas
apply(func, axis=0) 将自定义函数应用在各行或者各列上,func可返回标量或者Series
applymap(func) 将函数应用在DataFrame各个元素上
map(func) 将函数应用在Series各个元素上
网友评论