Python数据分析之Pandas学习(二)
利用python进行数据分析pandas方法总结
1.Numpy简单介绍
2.使用pandas产生结构化数据
增加栏位信息
df.colums = ['name', 'gender', 'age']
3.序列(Series)
类似Array,List的一维物件
每个Series都可以透过其索引(Index)进行存取
预设Series会以0到Series长度作为索引编号
4.资料筛选
根据索引来显示信息
df.ix[1] 显示第一行信息
df.ix[1:4] 显示第一行到第四行信息
根据栏位信息来显示信息
df['name']
df[['name', 'age']]
使用&取条件交集
df[(df['gender'] == 'M') & (df['age'] >= 30) ]
使用 | 取条件并集
df[(df['gender'] == 'M') | (df['age'] >= 30) ]
新增/删除栏位
注意:如果是0删除的是列,如果是1删除的是栏位
新增第6行
df.append(pd.DataFrame([{'age':20,'gender':'F','name':'qoo'}]))
删除第6行
df.drop(6)
设定新的索引
根据位置取值
根据索引取值
范例:
缺失值:
1.数据中有特定或一个范围的值是不完全的
2.缺失值可能会导致数据分析时产生偏误的推论
3.缺失值可能来自机械的缺失或是人为的缺失
-
机械缺失e.g.机械故障,导致数据无法被完整保存
-
人为缺失e.g.受访者拒绝透露部分信息
范例:
检查序列是否有缺失值
检查字段或Data Frame是否含有缺失值
范例:
.
计算缺失值的数量
范例:
查看所有的缺失值
查看各栏位缺失值的数量
所有缺失值的总和
处理缺失值
- 舍弃缺失值
- 当缺失值占数据比例很低时
- 使用平均数、中位数、众数等叙述性统计补齐缺失值
- 使用内插法补齐缺失值
- 如果字段数据成线性规律
1.舍弃缺失值
范例:
2.舍弃含有缺失值的列
范例:
![Python数据分析之Pandas学习(二) Python数据分析之Pandas学习(二)](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzU1MC8zNzMzYzUyYTlmODI5NWQ5NTMzMGIyNTQyYTcxZGRhNi5wbmc=)
![Python数据分析之Pandas学习(二) Python数据分析之Pandas学习(二)](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzU0Ni80NGMwZGFlNjIyODc1NDEzNDMzMGE2M2Y4MmI3ZjgxYS5wbmc=)
3.填补缺失值
4.向前/向后填值
5.使用内插法填补缺失值
通过某种线性规律填充值
查看前几行资料
df.head(3)
查看后三行资料
df.tail(3)
删除特定的某列
del df['Unamed: 0']
将‘暂无资料’变成缺失值
import numpy as
df.ix[df['物业费'] == '暂无资料','物业费'] == np.nan
df.head(3)
import pandas
df = pandas.read_csv('data/xxx.csv', na_values='暂无资料',index_col=0)
df.head(3)
查看DataFrame信息
df.info()
查看字段名称
df.columns
查看字段型态
df.dtypes
取得叙述性统计
df.describe()
侦测缺失值
df.isnull()
查看字段是否包含缺失值
df.isnull().any()
统计各栏位缺失值数量
df.isnull().sum()
删除有缺失值的字段
df = df.drop('参考月供',axis = 1)
筛选字段
df['产权性质'].value_counts()
df['产权性质'] == '个人产权'
根据索引取值
df.iloc[5:7]
舍弃包含缺失值的字段
df['建筑类别'].isnull().head(3)
df = df.dropna(axis=1,how='all')
补齐缺失值
df['物业费'] = df['物业费'].fillna(0)
df[df['总价'].isnull()].sum()
2
df[df['总价'].isnull()]
计算平均值
(df['总价']/df['建筑面积']).mean()
将数据写入csv中
df.to_csv('xxx.csv', index_label=False)
- Map
将函数套用到Series上的每个元素
- Apply
将函数套用到DataFrame上的行与列
- ApplyMap
将函数套用到DataFrame上的每个元素(elementwise)
默认 axis = 0,按列计算最高和最低差值
axis = 1,按行计算最高和最低差值
处理时间格式资料
打印出现在时间
from datetime import datetime
current_time = datetime.now()
将时间转换成字符串
current_time.strftime('%Y-%m-%d')
将字符串转换为时间
datetime.strptime('2018-9-11','%Y-%m-%d')