赞
踩
pkl文件是python里面保存文件的一种格式,如果直接打开会显示一堆序列化的东西(二进制文件)。
常用于保存神经网络训练的模型或者各种需要存储的数据。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(20).reshape(4,5))
df.to_pickle('foo.pkl')
data=pd.read_pickle('foo.pkl')
print(data)
输出为:
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14
3 15 16 17 18 19
import pickle
#wb是覆盖写,如果需要追加,则为‘ab'
f = open('data.pkl','wb')
#待写入数据
datas = {'name':'Bruce','age':25,'high':175}
#写入
data= pickle.dump(datas,f,-1)
#关闭文件
f.close()
f = open('data.pkl','rb')
#使用load的方法将数据从pkl文件中读取出来
pickle.load(f)
#关闭文件
f.close()
使用DataFrame的to_pickle就可以生成pickle文件,因此如果需要存储其他类型的数据将其转化为DataFrame即可存取,例如将dict类型数据保存在.pkl文件中
import pandas as pd import numpy as np df = pd.DataFrame(np.arange(20).reshape(4,5)) #使用DataFrame的to_pickle就可以生成pickle文件 df.to_pickle('data.pkl') #通过字典创建数据 dic={'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]} df2 = pd.DataFrame(dic,index=["a","b","c"]) df2.to_pickle('data2.pkl') #字典的键和值将转换为DataFrame的两列,其列名如选项列中所给 stu = { 'xiaoming':2, 'xiaohong':3, 'xiaoqiang':7,} print(pd.DataFrame(list(stu.items()),columns=['name', 'age'])) ''' 输出结果为: name age 0 xiaoming 2 1 xiaohong 3 2 xiaoqiang 7 '''
data=pd.read_pickle('data.pkl')
data2=pd.read_pickle('data2.pkl')
print('data:\n',data)
print('data2:\n',data2)
输出为
data:
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14
3 15 16 17 18 19
data2:
A B C
a 1 4 7
b 2 5 8
c 3 6 9
1.根据指定的索引列表查找
import pandas as pd
dic={'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]}
df = pd.DataFrame(dic,index=["a","b","c"])
print('data:\n',df)
ids=[0,2]
data=df.iloc[ids]
print('choose\n',data)
data:
A B C
a 1 4 7
b 2 5 8
c 3 6 9
choose
A B C
a 1 4 7
c 3 6 9
2.根据指定的**行列标签(不是索引)**进行查找
import pandas as pd
dic={'A':[1,2,3],'B':[4,5,6],'C':[7,5,7]}
df = pd.DataFrame(dic)
print('data:\n',df)
data=df.loc[0,'A']
print(data)
dic1={'A':[1,2,3],'B':[4,5,6],'C':[7,5,7]}
df1 = pd.DataFrame(dic1,index=['a','b','c'])
print('data:\n',df1)
data1=df1.loc['a','A']
print(data1)
data:
A B C
0 1 4 7
1 2 5 5
2 3 6 7
1
data:
A B C
a 1 4 7
b 2 5 5
c 3 6 7
1
3.根据判断条件查找
dic1={'A':[1,2,3],'B':[4,5,6],'C':[7,5,7]}
df1 = pd.DataFrame(dic1,index=['a','b','c'])
print('data:\n',df1)
print('-------------------')
data1=df1.loc[df1['B']==4,'C']
print(data1)
data:
A B C
a 1 4 7
b 2 5 5
c 3 6 7
-------------------
a 7
Name: C, dtype: int64
import pandas as pd
dic={'A':[1,2,3],'B':[4,5,6],'C':[7,5,7]}
df = pd.DataFrame(dic,index=["a","b","c"])
print('data:\n',df)
print('\n.unique:(列)\n',df['C'].unique())
#.loc默认逗号分隔,逗号前是行,逗号后是列
print('\n.unique:(行)\n',df.loc['b'].unique())
print('\n.unique:(列)\n',df.loc[:,'C'].unique())
data:
A B C
a 1 4 7
b 2 5 5
c 3 6 7
.unique:(列)
[7 5]
.unique:(行)
[2 5]
.unique:(列)
[7 5]
from pandas import Series,DataFrame
data = Series([9,23,3,56])
print(data)
输出索引在左,数值在右。在没有指定具体的索引时,则自动创建一个0~N-1的整数型索引
0 9
1 23
2 3
3 56
dtype: int64
可以通过Series的values和index属性获取数组的值和索引
print('data.values',data.values)
print('data.index',data.index)
data.values [ 9 23 3 56]
data.index RangeIndex(start=0, stop=4, step=1)
pandas的isnull和notnul或者实例方法data.isnull()可用于检测缺失数据:
import pandas as pd from pandas import Series,DataFrame dict={'a':1000, 'b':900, 'c':800} data=Series(dict) index=['a','b','d'] #根据字典和给出的索引创建Series data2=Series(dict,index) print('-'*20) print('data\n',data) print('-'*20) print('data2\n',data2) print('-'*20) print('isnull\n',pd.isnull(data2)) print('-'*20) print('notnull\n',pd.notnull(data2)) print('-'*20) print('data2.isnull\n',data2.isnull())
-------------------- data a 1000 b 900 c 800 dtype: int64 -------------------- data2 a 1000.0 b 900.0 d NaN dtype: float64 -------------------- isnull a False b False d True dtype: bool -------------------- notnull a True b True d False dtype: bool -------------------- data2.isnull a False b False d True dtype: bool
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。