Tutorial: Pandas入门

工具最大的好处,就是效率。

Data Structure


OOP是非常优秀的编程思想,那在学习pandas时,我们重点研究两种非常重要的对象,Series和DataFrame,Series是一列数据,DataFrame是很多列数据在一起。那我们先来看Series。

Series


Series 是一维的能够接受任何数据形式(整数,字符串,浮点数,python对象等)的结构,通常我们用

import pandas as pd
s = pd.Series(data, index=index)

这种方式来新建一个Series对象, 举三个例子

import numpy as np
s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])

d = {'a': 4, 'c': 2, 'b': 3}
s = pd.Series(d)

s = pd.Series(5, index=['a', 'b', 'c', 'd', 'e'])

这样,我们就得到了一个Series对象实例,那这个对象都有哪些方法呢?
Seires对象有两个相似的数据结构,ndarraydict,我们可以用一些类似的方法

# ndarray
s[0]  # 索引
s[:3]  # 范围
s[s > s.median]  # 判断
s[[4, 3, 1]]  # 列表索引
np.exp(s)  # e的指数幂

# dict
s['a']i
s.get('a')
s['e'] = 12
s.get('f', 3)

另外值得注意的是,Series还有一个单独看没什么用的name属性

s = pd.Series(data, index=index, name='something')
s.name

DataFrame


DataFrame 是一个二维标签的数据结构,我们可以把它看成一张sheet表、SQL表或是一个Series的字典,它是pandas最经常被使用的对象。和Series一样,我们先获得一个DataFrame对象(这里只介绍简单的两种,查看更多)

df = pd.DataFrame({'A': pd.Series(np.random.randn(10)),
                  'B': pd.Series(np.random.randn(11))},
                  index=range(11))

df = pd.read_csv('sample.csv',
                 names=['uid', 'similarquid', 'preansname', 'sufansname'],
                 index=pd.date_range('20180601', periods=100))

同样,当我们有了DataFrame对象之后,有哪些方法?

#简单获取一些表的信息
print(df)
df.info()
df.dtypes

df.head()
df.tail(10)

df.index
df.columns
df.values
df.describe()

df.sort_index(axis=1, ascending=False)
df.sort_values(by='B')

#选中一张表中的某些行、列, 甚至一个“单元格”
#简单常用的get方法
df['A']
df[0:3]
df['20180603':'20180607']

#推荐在生产中使用的方法 loc, iloc, at, iat
df.loc[row_indexer, column_indexer]  # 通过标签去定位行、列
# 值得注意的是,loc可以只定位行,所以列的参数是optional的
df.iloc[int(row), int(column)]  # 通过位置(index)去定位行、列
df.at['20180601', 'A']
df.iat[0, 0]

#布尔检索
df[df['A'] == 3]
df[df['A'].isin(['2014', '2016'])]

在看完了DataFrame的基础操作方法之后,不妨停下来想一想,排序筛选搜索修改我们都已经做到了,这就是数据清洗的一些工作。那作为数据分析的王牌之包,pandas在数据处理上当然有为人称道的本领,需要注意的是,pandas的方法往往有很多参数用来调优,希望大家在初学的时候能够多去查阅Document。

    `df.mean()`:求平均值   `df.describe()`:获取常用统计数据
    `df.apply(fuc)`:对data运行一个函数
    `s.value_counts()`:相当于python中`collections.Counter()`
    `pd.concat(df1, df2, df3)`:能够连接几个DataFrame
    `pd.merge(df1, df2, on='key')`:相当于SQL表的join
    `df.append()`:能够用于增加行
    `df.groupby('A').count()` or `df.groupby(['A', 'B']).sum()`:相当于split,apply,combine(aggregate)
    `df.to_csv('sample.csv', index=False)`:把处理后的DataFrame写成文件

*文中内容完全来源于官方文档10 minutes to pandas,如有错误,恳请指正~

你可能感兴趣的:(Tutorial: Pandas入门)