pandas学习笔记

导入pandas库

通常pandas库和numpy一同使用 所以我们同时导入两个库

import numpy as np
import pandas as pd

生成序列

Series()语句

使用pd.Series()语句生成与索引一一对应的序列

s=pd.Series([1,4,5,76,39])
print(s)

得到结果

0 1
1 4
2 5
3 76
4 39
dtype: int64

同样可以使用index= 语句替换索引

s=pd.Series([1,4,5,76,39],index=['one','two','three','four','five'])
print(s)

得到结果

one 1
two 4
three 5
four 76
five 39
dtype: int64

date_range()语句

使用pd.date_range()语句可以生成由指定日期组成的序列

dates=pd.date_range('20210320',periods=5)
print(dates)

得到结果

DatetimeIndex([‘2021-03-20’, ‘2021-03-21’, ‘2021-03-22’, ‘2021-03-23’,
‘2021-03-24’],
dtype=‘datetime64[ns]’, freq=‘D’)

DataFrame()语句

使用pd.DataFrame()语句可以生成带有行和列的序列

ind=['one','two','three','four','five']
col=['a','b','c','d','e']
datas=pd.DataFrame(np.random.randn(5,5),index=ind,columns=col)
print(datas)

得到结果

a b c d e
one 1.187459 1.180696 0.464304 -0.638170 0.813059
two -1.356659 0.414117 -0.315597 0.966381 -0.154367
three 1.384425 -1.321255 2.280381 0.365654 0.015550
four -0.574582 -0.352044 0.826273 2.159869 -1.056818
five -0.498532 1.217357 0.083757 0.367272 1.173441

其中可以用字典代替np数组 直接输出带有index的序列

numbers={'a':[1,1],'b':[2,2],'c':[3,3],'d':[4,4],'e':[5,5]}
datas=pd.DataFrame(numbers)
print(datas)

得到结果

a b c d e
0 1 2 3 4 5
1 1 2 3 4 5

查看序列中数据的信息

使用dtypes语句查看序列内数据的类型

numbers={'a':[1,1],'b':[2,2],'c':[3,3],'d':[4,4],'e':[5,5]}
datas=pd.DataFrame(numbers)
print(datas.dtypes)

得到结果

a int64
b int64
c int64
d int64
e int64
dtype: object

使用index语句查看序列中数据的索引

numbers={'a':[1,1],'b':[2,2],'c':[3,3],'d':[4,4],'e':[5,5]}
datas=pd.DataFrame(numbers)
print(datas.index)

得到结果

RangeIndex(start=0, stop=2, step=1)

使用columns语句查看序列数据的列

numbers={'a':[1,1],'b':[2,2],'c':[3,3],'d':[4,4],'e':[5,5]}
datas=pd.DataFrame(numbers)
print(datas.columns)

得到结果

Index([‘a’, ‘b’, ‘c’, ‘d’, ‘e’], dtype=‘object’)

使用values语句查看序列中数据的值

numbers={'a':[1,1],'b':[2,2],'c':[3,3],'d':[4,4],'e':[5,5]}
datas=pd.DataFrame(numbers)
print(datas.values)

得到结果

[[1 2 3 4 5]
[1 2 3 4 5]]

pandas选择数据

使用loc语句选择数据

选择列数据

numbers={'a':[1,1],'b':[2,2],'c':[3,3],'d':[4,4],'e':[5,5]}
datas=pd.DataFrame(numbers)
print(datas.loc[1])

得到结果

a 1
b 2
c 3
d 4
e 5
Name: 1, dtype: int64

选择行数据

numbers={'a':[1,1],'b':[2,2],'c':[3,3],'d':[4,4],'e':[5,5]}
datas=pd.DataFrame(numbers)
print(datas.loc[:,['b']])

得到结果

b
0 2
1 2

使用iloc()语句选择指定位置数据

numbers={'a':[1,1],'b':[2,2],'c':[3,3],'d':[4,4],'e':[5,5]}
datas=pd.DataFrame(numbers)
print(datas.iloc[1:2])

得到结果

a b c d e
1 1 2 3 4 5

pandas设置值

使用iloc()语句设置值

numbers={'a':[1,1],'b':[2,2],'c':[3,3],'d':[4,4],'e':[5,5]}
datas=pd.DataFrame(numbers)
datas.iloc[1:2]=1111
print(datas)

得到结果

a b c d e
0 1 2 3 4 5
1 1111 1111 1111 1111 1111

使用索引设置值

numbers={'a':[1,1],'b':[2,2],'c':[3,3],'d':[4,4],'e':[5,5]}
datas=pd.DataFrame(numbers)
datas.loc[0,'b']=111
print(datas)

得到结果

a b c d e
0 1 111 3 4 5
1 1 2 3 4 5

pandas处理数据丢失

使用dropna()语句删除丢失的数据(NaN)

numbers={'a':[1,1],'b':[2,2],'c':[3,3],'d':[4,4],'e':[5,5]}
datas=pd.DataFrame(numbers)
datas.loc[0,'b']=np.nan
print(datas.dropna(axis=0,how='any'))

其中axis=0时代表行 1代表列
how='any’时代表所有的NaN 'all’时代表只有一行或者一列为NaN时才删除

得到结果

a c d e
0 1 3 4 5
1 1 3 4 5

使用fillna()语句修改丢失的数据

numbers={'a':[1,1],'b':[2,2],'c':[3,3],'d':[4,4],'e':[5,5]}
datas=pd.DataFrame(numbers)
datas.loc[0,'b']=np.nan
print(datas.fillna(value=111))

得到结果

a b c d e
0 1 111.0 3 4 5
1 1 2.0 3 4 5

使用isfull()语句判断是否由丢失的数据

numbers={'a':[1,1],'b':[2,2],'c':[3,3],'d':[4,4],'e':[5,5]}
datas=pd.DataFrame(numbers)
datas.loc[0,'b']=np.nan
print(datas.isnull())

结果以布尔值返回

a b c d e
0 False True False False False
1 False False False False False

pandas合并数据

使用concat()语句合并数据

numbers1=pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])
numbers2=pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])
numbers3=pd.DataFrame(np.ones((3,4))*2,columns=['a','b','c','d'])
result=pd.concat([numbers1,numbers2,numbers3],axis=0,ignore_index=True)
print(result)

同样 axis=0时为行 1时为列
ignore_index=True时代表重新排序索引

得到结果

a b c d
0 0.0 0.0 0.0 0.0
1 0.0 0.0 0.0 0.0
2 0.0 0.0 0.0 0.0
3 1.0 1.0 1.0 1.0
4 1.0 1.0 1.0 1.0
5 1.0 1.0 1.0 1.0
6 2.0 2.0 2.0 2.0
7 2.0 2.0 2.0 2.0
8 2.0 2.0 2.0 2.0

使用join()语句合并数据

numbers1=pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])
numbers2=pd.DataFrame(np.ones((3,4))*1,columns=['b','c','d','e'])
result=pd.concat([numbers1,numbers2],join='inner',ignore_index=True)
print(result)

得到结果

b c d
0 0.0 0.0 0.0
1 0.0 0.0 0.0
2 0.0 0.0 0.0
3 1.0 1.0 1.0
4 1.0 1.0 1.0
5 1.0 1.0 1.0

使用append()语句添加数据

numbers1=pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])
numbers2=pd.DataFrame(np.ones((3,4))*1,columns=['b','c','d','e'])
result=numbers1.append(numbers2,ignore_index=True)
print(result)

得到结果

a b c d e
0 0.0 0.0 0.0 0.0 NaN
1 0.0 0.0 0.0 0.0 NaN
2 0.0 0.0 0.0 0.0 NaN
3 NaN 1.0 1.0 1.0 1.0
4 NaN 1.0 1.0 1.0 1.0
5 NaN 1.0 1.0 1.0 1.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值