本文总结了pandas作为一个数据分析工具的常用功能。
本文提到的功能,均是我在实际数据分析过程中经常使用到的功能。只要你是用pandas做数据分析、数据处理,我相信同样也会用到这里面绝大部分功能。因此,本教程非常具有实用性。
此外,和其他教程不一样的是,其他教程大多数是根据pandas这个包下面的模块、类、函数等代码的层面对各项功能进行分类,初学者上手很慢。
本文根据实际的数据分析具体过程--数据导入、数据探索、数据清洗、数据分析、结果保存的顺序--按照各个功能的在整个数据分析流程中使用先后顺序,对pandas的各项功能进行了分类。
这样读者可以把本文作为一个速查手册,在自己动手数据分析的时候,可以对照着本教程,做到哪一步就知道去哪一块找。这样做依然是为了增强实用性。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
一、导入数据
读取csv文件:
pd.read_csv(file_name, index_col=0,sep=';',encoding='utf_8_sig',names=['customer','restaurant'], low_memory=False, parse_dates = ['date'])
# index_col=0表示把csv中的第一列作为dataframe的index
# encoding指定了用什么编码格式读取,主要解决中文字符识别的问题
# sep表示csv里面用什么作为分隔符,默认是英文逗号,这里改成了英文分号
# names表示手动指定每一列的名字
# low_memory=False表示让pandas可以处理同一列里面有多种数据类型的情况
# parse_dates指定了某一列为datetime格式
读取Excel文件:
pd.read_excel(file_name,sheet_name='process', header=None)
# sheet_name指定了读取excel里面的哪一个sheet
设置最多显示100行100列:
pd.set_option('display.max_columns',100)
pd.set_option('display.max_rows',100)
二、生成DataFrame
由dict生成DataFrame:
pd.Series(dict_name,name=series_name)
由Series生成DataFrame:
pd.DataFrame([Series1,Series2,Series3])
由ndarray生成dataframe:
dataframe_name = pd.DataFrame(ndarray_name,columns=data.columns,index=data.index)
# 第1个参数是一个ndarray
# 第2个参数columns表示新的dataframe的每一列column的列名是什么。同理index指定了行名
生成series:
pd.Series(series_data, name=series_name, dtype='float64')
# 第1个参数是用来生成series的数据
# name是series的名字
# dtype指定series里面数据的类型
三、数据探索
整体探索:
data.columns.values # 查看有哪些列
data.keys() # 查看有哪些列
data.describe() # 描述性统计
data.head(2).T # 查看前2行
data.shape # 查看dataframe的形状,是几行几列的
type(data[item][2]) # 查看某一个变量的数据类型
data.preferred_genre.value_counts() # 查看一个feature的每一种取值有多少样本
data.info()
查看一个feature的不重复值有哪些、数据类型、空值个数:
def unique(data,i):
variables = data.keys().values
item = variables[i]
try:
print(sorted(data[item].unique()))
except:
print(data[item].unique())
print('-'*5, item, '-'*5)
print(type(data[item][0]))
print('-'*5, data[item].isna().sum(), '-'*5)
提取值&#