本学习笔记来自于莫烦Python,原
一、Pandas基本介绍和使用
Series数据结构:索引在左,值在右
import pandas as pdimport numpy as nps = pd.Series([1,3,6,np.nan,44,1])print(s)"""0 1.01 3.02 6.03 NaN4 44.05 1.0dtype: float64"""
DataFrame数据结构:表格型数据结构,包含一组有序的列,每列的值类型可以是不同的。它既有行索引也有列索引,可以看做是Series组成的大字典。
dates = pd.date_range('20160101',periods=6)df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d'])
print(df) """ a b c d 2016-01-01 -0.253065 -2.071051 -0.640515 0.613663 2016-01-02 -1.147178 1.532470 0.989255 -0.499761 2016-01-03 1.221656 -2.390171 1.862914 0.778070 2016-01-04 1.473877 -0.046419 0.610046 0.204672 2016-01-05 -1.584752 -0.700592 1.487264 -1.778293 2016-01-06 0.633675 -1.414157 -0.277066 -0.442545 """
DataFrame的三种创建方法:
-
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d'])
即指定了行与列的标签
-
df1 = pd.DataFrame(np.arange(12).reshape((3,4))) 不指定行与列的标签,默认为从0开始生成index
-
对每一列的数据进行特殊对待
df2 = pd.DataFrame({'A' : 1.,
'B' : pd.Timestamp('20130102'), 'C' : pd.Series(1,index=list(range(4)),dtype='float32'), 'D' : np.array([3] * 4,dtype='int32'), 'E' : pd.Categorical(["test","train","test","train"]), 'F' : 'foo'})
其中‘A’,‘B’等为列标签
属性或方法 | 功能 |
df.dtypes | 查看数据类型 |
df.index | 查看行名称 |
df.columns | 查看列名称 |
df.values | 查看所有df的值 |
df.describe() | 查看count,mean,std,min等数据总结 |
df.T | df的转置 |
df.sort_index(axis=1,ascending=False) | 对数据索引排序输出 |
df.sort_values(by='column_name') | 对数据值排序输出 |
二、利用Pandas选择数据
简单筛选
#选择df中列名称为A的元素 df.['A']df.A #选择一到三行的数据 df[0:3]
通过pandas的内置函数筛选
根据标签筛选 loc
#通过标签选择数据,可以选择某几行或某几列#选择行标签为‘20130102’,列标签为‘A’或‘B’的数据 df.loc['20130102',['A','B']]
根据位置筛选 iloc
#选择行位置3-5,列位置1-3的数据df.iloc[3:5,1:3]#选择行位置为1,3,5,列位置为1-3的数据df.iloc[[1,3,5],1:3]
根据标签和位置的混合筛选 ix
#选择行位置为0-3,列名称为'A','C'的数据df.ix[:3,['A','C']]
根据布尔表达式进行筛选
#选出‘A’的值大于8的所有数据df[df.A>8]''' A B C D2013-01-04 12 13 14 152013-01-05 16 17 18 192013-01-06 20 21 22 23'''