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