pandas是python数据分析的一个最重要的工具。
基本使用
import pandas as pd
df = pd.read_csv(‘file.csv‘)
# 返回数据的大小
df.shape
# 显示数据的一些对象信息和内存使用
df.info()
# 显示数据的统计量信息
df.describe()
花式索引
我们的主要数据结构就是DataFrame了,DataFrame有两部分构成,一个是列(columns)。列是有名称的或者说有标签的。另一个是索引(index),这里我们为了避孕歧义称之为行(rows),行一般没有名称,但是也可以有名称。
如图所示:
#! /usr/bin/env python # -*- coding:utf-8 -*- # Author: [email protected] # Date:2019/3/26 import pandas as pd import numpy as np data = { ‘animal‘: [‘cat‘, ‘cat‘, ‘snake‘, ‘dog‘, ‘dog‘, ‘cat‘, ‘snake‘, ‘cat‘, ‘dog‘, ‘dog‘], ‘age‘: [2.5, 3, 0.5, np.nan, 5, 2, 4.5, np.nan, 7, 3], ‘visits‘: [1, 3, 2, 3, 2, 3, 1, 1, 2, 1], ‘priority‘: [‘yes‘, ‘yes‘, ‘no‘, ‘yes‘, ‘no‘, ‘no‘, ‘no‘, ‘yes‘, ‘no‘, ‘no‘] } labels = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘, ‘h‘, ‘i‘, ‘j‘] df = pd.DataFrame(data, index=labels)
print(df)
animal age visits priority a cat 2.5 1 yes b cat 3.0 3 yes c snake 0.5 2 no d dog NaN 3 yes e dog 5.0 2 no f cat 2.0 3 no g snake 4.5 1 no h cat NaN 1 yes i dog 7.0 2 no j dog 3.0 1 no
原始索引
原始索引就是类list的索引方式。
当索引对象是切片时就是行索引。
# 原始索引 print(df[1:3])
animal age visits priority b cat 3.0 3 yes c snake 0.5 2 no
当索引对象是list时就是列索引。
print(df[[‘age‘, ‘animal‘]])
age animal a 2.5 cat b 3.0 cat c 0.5 snake d NaN dog e 5.0 dog f 2.0 cat g 4.5 snake h NaN cat i 7.0 dog j 3.0 dog
位置索引
print(df.iloc[0:5, 1:4])
age visits priority a 2.5 1 yes b 3.0 3 yes c 0.5 2 no d NaN 3 yes e 5.0 2 no
标签索引
loc
与iloc
的主要区别就是索引要用标签不能用序号。
print(df.loc[[‘a‘, ‘b‘], [‘animal‘, ‘age‘]])
animal age a cat 2.5 b cat 3.0
混合索引
其实就是位置索引和标签索引的混合使用方式。
print(df.ix[0:2, [‘animal‘, ‘age‘]])
animal age a cat 2.5 b cat 3.0
条件索引
print(df[(df[‘animal‘] == ‘cat‘) & (df[‘age‘] < 3)])
animal age visits priority a cat 2.5 1 yes f cat 2.0 3 no
数据清洗
找到缺失值。
print(df[df[‘age‘].isnull()]) # 找到年龄缺失的值
animal age visits priority d dog NaN 3 yes h cat NaN 1 yes
填充缺失值。
df[‘age‘].fillna("99", inplace=True) print(df) # NaN填充为99
animal age visits priority a cat 2.5 1 yes b cat 3 3 yes c snake 0.5 2 no d dog 99 3 yes e dog 5 2 no f cat 2 3 no g snake 4.5 1 no h cat 99 1 yes i dog 7 2 no j dog 3 1 no
将字符值替换成布尔值
df[‘priority‘] = df[‘priority‘].map({‘yes‘: True, ‘no‘: False}) print(df)
animal age visits priority a cat 2.5 1 True b cat 3 3 True c snake 0.5 2 False d dog 99 3 True e dog 5 2 False f cat 2 3 False g snake 4.5 1 False h cat 99 1 True i dog 7 2 False j dog 3 1 False