首页 > 其他 > 详细

pandas笔记

时间:2017-08-17 19:14:18      阅读:275      评论:0      收藏:0      [点我收藏+]

Pandas的数据类型

Pandas基于两种数据类型: series 与 dataframe 。

Series

一个series是一个一维的数据类型,其中每一个元素都有一个标签。类似于Numpy中元素带标签的数组。其中,标签可以是数字或者字符串。
import numpy as np
import pandas as pd
s = pd.Series([1, 2, 5, np.nan, 6, 8])
print s
 

DataFrame

一个dataframe是一个二维的表结构。Pandas的dataframe可以存储许多种不同的数据类型,并且每一个坐标轴都有自己的标签。你可以把它想象成一个series的字典项。
 

创建日期索引序列

import pandas as pd
dates = pd.date_range(20170817, periods=7)

结果

    此时会产生一个日期序列 从2017-08-17开始,产生7个连续的日期

DatetimeIndex([2017-08-17, 2017-08-18, 2017-08-19, 2017-08-20,2017-08-21, 2017-08-22, 2017-08-23],
              dtype=datetime64[ns], freq=D)

创建Dataframe,其中 index 决定索引序列,columns 决定列名[传入列表]

import pandas as pd
import numpy as np
dates = pd.date_range(20170817, periods=7)
df = pd.DataFrame(np.random.randn(7,4), index=dates, columns=[A,B,C,D])

结果

    此时会在Dataframe对象里插入7行每行4个随机数(7和4都是由index,columns的长度决定)

                   A         B         C         D
2017-08-17 -1.056218  0.131798 -0.131886  1.138259
2017-08-18  1.699503  2.494435  1.246487  0.743047
2017-08-19 -0.803859  0.911608 -0.858777 -1.790395
2017-08-20 -0.314994  0.848343 -0.563583  0.337760
2017-08-21  2.139696 -1.633749  1.210869  0.950425
2017-08-22  0.480713 -0.215890 -0.342616 -0.015152
2017-08-23  0.063328 -1.522219 -0.132829  1.352349
 

选择/切片

选择单独的一列,返回 Serires,与 df.A 效果相当。

df[A]

注意

  当要输出Dataframe对象的index时候们只能用

df.index

 

位置切片(行)

df[0:3]

 

  索引切片(整行 由index引出)

df[20170817:20170819]

 

对多个轴同时通过标签进行选择(整列)

df.loc[:,[A,B]]

注意

  此处不能用

df.loc[:,[A:B]]

 

获得某一个具体位置的数据(传入行 列坐标)

df.loc[dates[0],A]
 
df.iloc[1,1]

 

通过位置进行选择(行)

df.iloc[3]

此时会选择 第4、5行的前两列的数据

df.iloc[3:5,0:2]
 
此时会选择第2 3 4行的 第1 3列数据
df.iloc[[1,2,3],[0,2]]
 

条件选择

布尔索引
df[df.A < 0]
获得大于零的项的数值
df[df > 0]

 

赋值(新增一列,索引需要和对应好 格式一致 否则会Nan)

s1 = pd.Series([1,2,3,4,5,6,7], index=pd.date_range(20170817, periods=7))
df[F] = s1

 

删除所有带有缺省项的行

df1.dropna()

 

给缺省项赋值

df1.fillna(value=100)
 

# 根据某一轴的索引进行排序

注意   ascending=True 升序  

df.sort_index(ascending=True)

 

根据某一列的数值进行排序

df.sort_values(B,ascending=True)
 

求平均值

df.mean()

 

指定轴上的平均值

df.mean(1)
 
 

合并

使用 concat() 连接 pandas 对象(包左不包右)

df = pd.DataFrame(np.random.randn(10, 4))
pieces = [df[:2], df[3:4]] 
df2=pd.concat(pieces)

 

 

追加

在 dataframe 数据后追加行

df = pd.DataFrame(np.random.randn(8, 4), columns=[A,B,C,D])
s = df.iloc[3]
df2=df.append(s, ignore_index=True)
ignore_index=True 即:保持原来的index
 

分组

分组常常意味着可能包含以下的几种的操作中一个或多个
1.依据一些标准分离数据
2.对组单独地应用函数
3.将结果合并到一个数据结构中
 
df = pd.DataFrame({A: [foo, bar, foo, bar,
foo, bar, foo, foo],
B: [one, one, two, three,
two, two, one, three],
C: np.random.randn(8),
D: np.random.randn(8)})

 

# 对单个分组应用函数,数据被分成了 bar 组与 foo 组,分别计算总和。
df.groupby(A)[C].sum() # 只显示C
df.groupby(A).sum() # 显示所有

 

# 依据多个列分组会构成一个分级索引
df.groupby([A, B]).sum()
 

文件存储

# 从 csv 文件读取数据
pd.read_csv(A.csv)
 
# 保存到 csv 文件
df.to_csv(‘A.csv)
 
# 读取 excel 文件
pd.read_excel(‘A.xlsx, Sheet1, index_col=None, na_values=[NA])
 
# 保存到 excel 文件
df.to_excel(A.xlsx, sheet_name=Sheet1)
 

pandas笔记

原文:http://www.cnblogs.com/HapyyHao1314/p/7383783.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!