初识数据分析01——Pandas入门
数据处理
- 导入 Pandas 与 NumPy:
In [1]: import numpy as np
In [2]: import pandas as pd
- 载入数据
pd.read_csv()
- 分块读取
pd.read_csv('train.csv', chunksize=1000)
- 查看数据的基本信息
df.info()
- 判断数据是否为空,为空的地方返回True,其余地方返回False
df.isnull().
- 保存数据
df.to_csv()
数据类型
Series
Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。
Series 由索引(index)和列组成,函数如下:
pandas.Series( data, index, dtype, name, copy)
参数说明:
- data:一组数据(ndarray 类型)。
- index:数据索引标签,如果不指定,默认从 0 开始。
- dtype:数据类型,默认会自己判断。
- name:设置名称。
- copy:拷贝数据,默认为 False。
DataFrame
DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。
DataFrame 构造方法如下:
pandas.DataFrame( data, index, columns, dtype, copy)
参数说明:
- data:一组数据(ndarray、series, map, lists, dict 等类型)。
- index:索引值,或者可以称为行标签。
- columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。
- dtype:数据类型。
- copy:拷贝数据,默认为 False。
例:
pd.DataFrame(np.arange(8).reshape((2,4)),index=[2,1],columns=['d', 'a', 'b', 'c'])
# 构建一个有数字有空值的DataFrame数据
frame2 = pd.DataFrame([[1.4, np.nan],
[7.1, -4.5],
[np.nan, np.nan],
[0.75, -1.3]
], index=['a', 'b', 'c', 'd'], columns=['one', 'two'])
frame2
【代码解析】
pd.DataFrame() :创建一个DataFrame对象
np.arange(8).reshape((2, 4)) : 生成一个二维数组(2*4),第一列:0,1,2,3 第二列:4,5,6,7
index=['2, 1] :DataFrame 对象的索引列
columns=[‘d’, ‘a’, ‘b’, ‘c’] :DataFrame 对象的索引行
相加
两个DataFrame相加后,会返回一个新的DataFrame,对应的行和列的值会相加,没有对应的会变成空值NaN
查看列名
假定有数据集df,格式为dataframe,现想获取其列名
-
df.columns:返回的是array格式。
-
list(df) :返回list格式,非常方便
-
df.keys()
查看某一列所有值
- 查看某一列唯一值
dataframe['xxx'].unique()
-
查看某一列所有值(例:查看"Cabin"这列的所有值)
df['Cabin'].head(3)
df.Cabin.head(3)
删除多余列
- drop
DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')
参数解释:
- labels:单个标签或类似列表,要删除的索引或列标签。
- axis:{0或’index’,1或’columns’},默认0,是从索引(0或“ index”)还是从列(1或“ columns”)中删除标签。axis=0表示行,axis=1表示列
- index:单个标签或类似列表,指定轴的替代方法(labels, axis=0 is equivalent to index=labels)
- columns:单标签或类似列表,指定轴的替代方法(labels, axis=1 is equivalent to columns=labels)
- level:int或级别名称,可选,对于MultiIndex,将从中删除标签的级别。
- inplace:布尔值,默认为False,如果为False,则返回副本。否则,执行就地操作并返回无。
- errors:{‘ignore’,‘raise’},默认为’raise’,如果’ignore’,则抑制错误,仅删除现有标签 。
如果想要完全的删除你的数据结构,使用inplace=True,因为使用inplace就将原数据覆盖了,
df.drop(['B', 'C'], axis=1)
#另一种表达
df.drop(columns=['B', 'C'])
#还可以这样表达
df.drop(labels=['B', 'C'], axis=1)
- del
例:删除test中的a列
del test['a']
条件筛选
df[df.A==100]
df[df["Age"]<10]
df[(df.A==100)&(df.B=='a')]
# 与
df[(df.A==100)|(df.B=='b')]
#或
重置索引
reset_index()
不想保留原来的index,使用参数 drop=True,默认 False。
标签索引
loc[] | 基于标签索引选取数据 |
---|---|
.iloc[] | 基于整数索引选取数据 |
按升序按列排序
- .sort_values()
使用.sort_values()
,将单个参数传递给包含要作为排序依据的列的名称的方法。
DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)
参数
by – 指定列名(axis=0或者’index’)或索引值(axis=1或者’columns’)
axis – 按行、按列,默认axis=0按指定列排序
ascending – 是否升序 默认为True
inplace – 是否修改原对象
kind – 排序算法 快排quicksort、归并mergesort、堆排序heapsort、稳定排序stable,默认快排
na_position – {‘first’, ‘last’} 设定缺失值的显示位置
ignore_index – 排序后是否重置索引
key – 排序之前使用的函数 (version 1.1.0 后才有该参数)
- 其他排序方式
# 让行索引升序排序
frame.sort_index()
# 让列索引升序排序
frame.sort_index(axis=1)
# 让列索引降序排序
frame.sort_index(axis=1, ascending=False)
# 让任选两列数据同时降序排序
frame.sort_values(by=['a', 'c'], ascending=False)
describe()函数
DataFrame.describe(percentiles=None, include=None, exclude=None)
参数
percentiles:赋值类似列表形式,可选
表示百分位数,介于0和1之间。默认值为 [.25,.5,.75],分别返回第25,第50和第75百分位数。 可自定义其它值,用法为df.describe(percentiles=[.xx])。
include:‘all’,类似于dtypes列表或None(默认值),可选
要包含在结果中的数据类型的白名单。对于Series
不可用。以下是选项:
‘all’:输入的所有列都将包含在输出中。
类似于dtypes的列表:将结果限制为提供的数据类型。将结果限制为数字类型用法:numpy.number
。要将其限制为对象列用法:numpy.object
。字符串也可以以select_dtypes
(例如df.describe(include=['O'])
)的方式使用。要选择分类类型,请使用'category'
无(默认):结果将包括所有数字列。
exclude:类似于dtypes列表或None(默认值),可选,
要从结果中除去的黑名单数据类型列表。Series
不可用。以下是选项:
类似于dtypes的列表:从结果中排除提供的数据类型。排除数值类型用法:numpy.number
。要排除对象列,使用numpy.object
。字符串也可以以select_dtypes
(例如df.describe(include=['O'])
)的方式使用。要排除分类类型,请使用'category'
无(默认):结果将不包含任何内容。
count : 样本数据大小
mean : 样本数据的平均值
std : 样本数据的标准差
min : 样本数据的最小值
25% : 样本数据25%的时候的值
50% : 样本数据50%的时候的值
75% : 样本数据75%的时候的值
max : 样本数据的最大值