pandas数据分析
pandas主要有两种数据结构,分别是dataframe和series,本次我们主要讲述的是dataframe的简单应用,从数据的读取到清洗。
数据读取与观察
- 1.pandas读取文件的方法很多,其中
read_csv()
最为常用,相对应的就有to_csv()
方法(df调用) - 2.数据的观察:
- 2.1 dataframe中,类型主要有
- 2.2
head(),tail()
:显示df的前n个记录(默认是5),显示包括列名。 - 2.2
info(),describe(),columns
:显示df的全部信息,描述,还有列名。需要注意的是,describe()
只能生成对数字的描述,Object类型无法统计描述 - 2.4 索引:在dataframe中不能够像Numpy那样直接通过df[i]来进行索引,需要通过df[i:j]来索引具体某几行(切片操作),或者索引某一列
df['column_name'].values
来返回某一列的数值 - 2.5 切片:切片可以通过直接
df[i:j]
来实现行切片,返回第i:j-1行,也可以通过.iloc
来切片或者重写覆盖(用法如下)
import csv
import pandas
import numpy as np
import sklearn
import re
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import matplotlib
%matplotlib inline
f = open("机票综合查询.csv")
data = pandas.read_csv(f,encoding='utf-8')
data.head()
data.tail()
print(data.index) ## 能够返回整张表中的记录数
data.info() ## info() 显示数据表的基本信息
print(data.describe().T) ## 描述统计(基于数字)
data[0:2] ## 返回0:2的共2行记录(切片)
print(data.iloc[0:3,[1,3]]) #获取1列3列的1~3行数据
#data.iloc[0:3,[1,3]]=2 ## 把2写到选择的位置,起到覆盖作用
passages = data["乘机人"].values ## 通过values把返回的series变成numpyde的ndarray形式
data.columns
RangeIndex(start=0, stop=125011, step=1)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 125011 entries, 0 to 125010
Data columns (total 7 columns):
乘机人 124861 non-null object
航程 124861 non-null object
支付科目 118861 non-null object
票面_折扣 124683 non-null float64
票面_起飞时间 124861 non-null object
票面_降落时间 124861 non-null object
票面_舱位 125011 non-null object
dtypes: float64(1), object(6)
memory usage: 6.7+ MB
count mean std min 25% 50% 75% max
票面_折扣 124683.0 0.535882 0.358774 0.0 0.3 0.503 0.798 5.0
航程 票面_折扣
0 成都-南京 0.485
1 西宁-广州 0.301
2 广州-西宁 0.380
Index(['乘机人', '航程', '支付科目', '票面_折扣', '票面_起飞时间', '票面_降落时间', '票面_舱位'], dtype='object')
3.数据筛选:
- 3.1精确筛选:通过
isin
方法来筛选指定信息。 - 3.2模糊筛选:通过正则表达式来进行匹配
chose = ["成都-南京","西宁-广州"]
result = data["航程"].isin(chose) #将要过滤的数据放入lis