pandas 使用

2019-06-09  本文已影响0人  dongshangtong

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
  1. 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()|
  1. 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各个元素上
上一篇 下一篇

猜你喜欢

热点阅读