pandas库

【1】

pandas.cut()   #将数据进行切分

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False)

'''
x,类array对象,且必须为一维,待切割的原形式
bins, 整数、序列尺度、或间隔索引。如果bins是一个整数,它定义了x宽度范围内的等宽面元数量,但是在这种情况下,x的范围在每个边上被延长1%,以保证包括x的最小值或最大值。如果bin是序列,它定义了允许非均匀bin宽度的bin边缘。在这种情况下没有x的范围的扩展。
right,布尔值。是否是左开右闭区间
labels,用作结果箱的标签。必须与结果箱相同长度。如果FALSE,只返回整数指标面元。
retbins,布尔值。是否返回面元
precision,整数。返回面元的小数点几位
include_lowest,布尔值。第一个区间的左端点是否包含
'''


import numpy as np
import pandas as pd
factors = np.random.randn(9)
print(pd.cut(factors, 3))   #切分为三个区间段
注意:返回值的形式为:
[(-0.688, 0.207], (0.207, 1.102], (0.207, 1.102], (0.207, 1.102], (-1.586, -0.688], (-0.688, 0.207], (-1.586, -0.688], (0.207, 1.102], (-0.688, 0.207]]
其含义为每个数包含的区间。

【2】

pandas数据进行合并:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

'''
#concatennating 合并

df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*2,columns=['a','b','c','d'])
print(df1)
print(df2)
print(df3)
#axis=0代表按照列进行合并
#ingnor_index代表葫忽略行号,重新排序
res = pd.concat([df1,df2,df3],axis=0,ignore_index=True)
print(res)
'''

'''
#join['inner','outer']
df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','e'])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])

#join=outer代表使用的是nan来填充没有的数据
#join=inner代表的是把双方都没有的去掉
res = pd.concat([df1,df2],axis=0,join='inner',ignore_index=True)
print(res)
'''


'''
#join_axes代表使用谁的标号进行合并(横向合并)
df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','e'],index=[1,2,3])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'],index=[2,3,4])
res = pd.concat([df1,df2],axis=1,join_axes=[df1.index])
print(res)
'''


'''
df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*2,columns=['a','b','c','d'])
s1 = pd.Series([1,2,3,4],index=['a','b','c','d'])
print(s1)
#在df1上进行扩展df2和df3,也就是把另外两个加到后面
res = df1.append([df2,df3],ignore_index=True)
res1 = df1.append(s1,ignore_index=True)
print(res)
print(res1)
'''

'''
#进行左右合并
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                                  'A': ['A0', 'A1', 'A2', 'A3'],
                                  'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                                    'C': ['C0', 'C1', 'C2', 'C3'],
                                    'D': ['D0', 'D1', 'D2', 'D3']})

print(left)
print(right)
res = pd.merge(left,right,on="key")
print(res)
'''



'''
# consider two keys
left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
                             'key2': ['K0', 'K1', 'K0', 'K1'],
                             'A': ['A0', 'A1', 'A2', 'A3'],
                             'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                              'key2': ['K0', 'K0', 'K0', 'K0'],
                              'C': ['C0', 'C1', 'C2', 'C3'],
                              'D': ['D0', 'D1', 'D2', 'D3']})
print(left)
print(right)
res = pd.merge(left, right, on=['key1', 'key2'], how='inner')  # default for how='inner'
print(res)
#使用inner的合并方法:只合并key1,key2相同的
#A0  B0   K0   K0与C0  D0   K0   K0相同,进行合并
#A2  B2   K1   K0与C1  D1   K1   K0相同,进行合并
#A2  B2   K1   K0与C2  D2   K1   K0也相同,也需要进行合并
# how = ['left', 'right', 'outer', 'inner']
res = pd.merge(left, right, on=['key1', 'key2'], how='left')
print(res)
'''


#Series
data = pd.Series(np.random.rand(1000),index=np.arange(1000))
data = data.cumsum()
data.plot()
plt.show()


【3】

pandas.DataFrame.groupby()

import pandas as pd
import numpy as np
df = pd.DataFrame({'key1':list('aabba'),
                  'key2': ['one','two','one','two','one'],
                  'data1': np.random.randn(5),
                  'data2': np.random.randn(5)})
grouped = df['data1'].groupby(df['key1'])
#可以对groupd进行一系列的操作

print(grouped.count())   #返回的数据结构为Series数据结构
print(pd.DataFrame(grouped.count()))  #返回的数据结构为DataFrame的数据结构 

【4】

loc和iloc

loc意义:通过行标签索引行数据
	iloc[n]表示索引的是第n行(index 是整数)
	loc[‘d’]表示索引的是第’d’行(index 是字符)
iloc   :通过行号获取行数据,不能是字符     #建议使用
ix——结合前两种的混合索引                          #建议不使用

【5】

pandas.get_dumies(def['key'])    #进行one-hot编码

返回的数据也是pandas.DateFrame的数据结构

【6】

pandas.DataFrame.drop()
参数表:axis=1(按列方向操作)、inplace=True(修改完数据,在原数据上保存)
如果inplace不设置为True的话,就必须将修改过的数据赋值给新的变量,原数据不会发生改变

df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*2,columns=['a','b','c','d'])
# print(df1)
# print(df2)
# print(df3)
#axis=0代表按照列进行合并
#ingnor_index代表葫忽略行号,重新排序
res = pd.concat([df1,df2,df3],axis=0,ignore_index=True)
print(res)
#默认的删除为某一行
res1 = res.drop(['a'],axis=1,inplace=False)
print(res)
print(res1)

当然,删除也可以按照第几行第几列进行删除
res.drop(res.columns[1],axis=1,inplace=True)    #删除第一列,下标为1的那一列
#注意!!!!!若一次项删除很多列,必须提前赋值
若:
res.drop(res.columns[0,1],axis=1,inplace=True)    #会抱错,因为参数过多
正确的写法:
x = [0,1]
res.drop(res.columns[x],axis=1,inplace=True)#这样会删除下标为[0,1]的列
或者;
res.drop(res.columns['a','b'],axis=1,inplace=True)也可以是实现

#删除行
res.drop([1],axis=0,inplace=True)   #删除第一行,下标为1的那一行

你可能感兴趣的:(python,pandas)