博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pandas学习笔记
阅读量:4027 次
发布时间:2019-05-24

本文共 3054 字,大约阅读时间需要 10 分钟。

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()

转载地址:http://exobi.baihongyu.com/

你可能感兴趣的文章
[茶余饭后]10大毕业生必听得歌曲
查看>>
gdb调试命令的三种调试方式和简单命令介绍
查看>>
C++程序员的几种境界
查看>>
VC++ MFC SQL ADO数据库访问技术使用的基本步骤及方法
查看>>
VUE-Vue.js之$refs,父组件访问、修改子组件中 的数据
查看>>
Vue-子组件改变父级组件的信息
查看>>
Python自动化之pytest常用插件
查看>>
Python自动化之pytest框架使用详解
查看>>
【正则表达式】以个人的理解帮助大家认识正则表达式
查看>>
性能调优之iostat命令详解
查看>>
性能调优之iftop命令详解
查看>>
非关系型数据库(nosql)介绍
查看>>
移动端自动化测试-Windows-Android-Appium环境搭建
查看>>
Xpath使用方法
查看>>
移动端自动化测试-Mac-IOS-Appium环境搭建
查看>>
Selenium之前世今生
查看>>
Selenium-WebDriverApi接口详解
查看>>
Selenium-ActionChains Api接口详解
查看>>
Selenium-Switch与SelectApi接口详解
查看>>
Selenium-Css Selector使用方法
查看>>