pandas学习笔记



pandas可以指定每行每列的名字


基础:


创建一个Pandans的序列:
result= pd.Series([1,2,3,4])
创建一个时间的序列
dates = pd.date_range("20160304",periods=6)
创建一个二维数据() 相当于二维的numpy)
pd.DataFrame(np.random.randn(6,4),index=dates(已经定义好的变量),columns=['a','b','c','d'])


使用字典来创建二维数据:
A,B,C
pd.DateFrame({'A':1,'B':'fpp','C':'pd'})


result.dtypes  每列的类型
result.index    每列的序号
result.columns  每列的列名
result.values   所有值
result.describe()  描述  ,只能运算数字的一些操作
result.T  矩阵转至
result.sort_index(axis=1,ascending=False)  以列名来倒叙排序 
1:列名排序  0:行排序  
False:倒叙,True:正序
result.sort_values(by='E')  :排序当行的值




选择数据:
result['A']/result.A   --->获取A列的值
result[2:3]    --->切片选择


pd.loc['行名',['列名','']]


pd.iloc[3] 第三行的数据
pd.iloc[3,1] 第三第一列


pd.ix[行,列]   -结合iloc和loc


pd[pd.A>8]  ----->A列大于8的所有信息

设置值:
通过选择数据后然后进行赋值

处理丢失数据:
df.dropna(axis=0,how="any")  #how={'any',"all"} any:只要有none就丢掉,all:全为none才丢掉
df.fillna(value=0):填充none位置处的值
df.isnull():返回False,True列表 来查看是否缺失值
np.any(df.isnull()==True)  -----检查是否至少有一个等于true


读取数据:
data = pd.read_csv("文件名")  ----读取csv的文件
data.to_csv("文件名")


合并1concat    --->合并DataFrame
列名一样合并:
1.res = pd.concat([df1,df2,df3],axis=0,ignore_index=True)  ignore_index:忽略行名,axis=0是预设值,因此未设定任何参数时,函数默认axis=0。0:纵向,1:横向

2.#join,['inner','outer']  默认是"outer"依照column来做"纵向"合并,如果没有就用None填充,inner,只会合并相同的列,
res = pd.concat([df1,df2,df3],axis=0,join="outer",ignore_index=True)     ignore_index:忽略行名

3. join_axes (依照 axes 合并)->依据哪一个的索引来左右合并
pd.concat([df1,df2],axis=1,join_axes=[df1.index],ignore_index=True)  依据df1的行名来左右合并 

df1.append([数据1,数据2],ignore_index=True)  -->也可以指定行还是列添加
s1 =  pd.Series([1,2,3,4],index=['a','b','c','d'])
df1.append([s1],ignore_index=True)  ->只在最后一行添加一行

合并2merge:
关于列名合并,但主要是用于两组有key column的数据,统一索引的数据. 通常也被用在Database的处理当中.
pd.merge(date1,date2,on=["列名"])   ----》on依据哪一个列名合并,默认是how=inner-->只考虑相同的key
how=[inner,outer,left,right]  ->left 以左边的dataframe的列名为主


res = pd.merge(left,right,on="key")  #on=""  依据那一列名合并


# 合并时有4种方法how = ['left', 'right', 'outer', 'inner'],预设值how='inner':找相同的合并


res = pd.merge(left,right,on=["key1","key2"],how="outer") #全部合并,没有值用none补充

res = pd.merge(left,right,on=["key1","key2"],how="left") #以第一个数据(left)的on为主

res = pd.merge(left,right,on=["key1","key2"],how="right",indicator="result")  #以第二个数据(right)的on为主,indicator="result"将合并的记录是否有值放在新的一列。


res=pd.merge(left,right,left_index=True,right_index=True,how="outer")   #left_index=True,right_index=True另个必须同时写,依据两个的行索引来合并

#使用suffixes解决overlapping的问题
res = pd.merge(boys, girls, on='k', suffixes=['_boy', '_girl'], how='outer') #suffixes 解决列名或者行名一样的问题,给两个一样的列名起个别名


plot:汇图


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


#Series
data = pd.Series(np.random.randn(1000),index=np.arange(1000))
data = data.cumsum() #每个数相加与前一个
data.plot()    #数据绘图
plt.show()    #plt显示图




#DataFrame
data = pd.DataFrame(np.random.randn(1000,4),index=np.arange(1000),columns=['A','B','C','D'])
data = data.cumsum()
#data.plot()
# plt.show()
#plot method
    #vbar,hist,box,kde,area,scatter,hexbin.....  #图的一些展示方式
ax = data.plot.scatter(x='A',y='B',color="DarkBlue",label="Class1")


#data.plot.scatter(x='D',y='C',color="darkGreen",label="Class2",ax=ax)  #在一张图上画上多个class
plt.show()








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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值