数据分析-02

2018-10-14  本文已影响0人  博士伦2014

第二神器pandas库

1. Series

1.1 一种类似一维数组的对象
1.2 Series(data=None, index=None, dtype=None, name=None,copy=False,fastpath=False)

Series(data=[1,2,3,4],index=list('ABCD'))
````Series({'A':1,'B':2,'C':3,'D':4})```

1.3 索引和切片
1.4 属性和方法

shape查看形状
size内容的个数
index查看索引
values查看内容
head()查看头几行数据
tail()查看末尾几行数据
unique()去重

1.5 空值
1.6 Series运算
1.7 多重索引

Series(data,index=[['期中','期中','期末','期末'],['语文','数学','语文','数学']])
Series([100,90,80,70,60,50],index=pd.MultiIndex.from_product([['期中','期末'],['语','数','外']]))

1.8 多层索引的索引与切片

2. DataFrame

2.1 一个表格型数据结构
2.2 创建

DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
data一个二维数组
index行索引--->列表
columns列索引--->列表

index=['张三','李四','王老五','zhaoliu','田七']
columns = ['python','java','c','math']
df = DataFrame(data=nd,index=index,columns=columns)
DataFrame(data={
'A':[1,2,3,4],
'B':[1,2,3,4],
 'C':[1,2,3,4],
})

pd.read_csv('./data/president_heights.csv')

2.3 查找

.query(查询条件) :df1.query('name=="lucy"&age>14')

2.4 索引
df.loc['张三','python']
df.python.iloc[0]
df.iloc[0,0]
df.python.loc['张三']
df.loc['张三'].loc['python']

.loc 里面用字符串索引 df.loc['行名','列名']
.iloc 里面用编号 df.iloc[行索引,列索引]

2.5 切片
2.6 运算
2.7 处理丢失数据
2.8 拼接操作
pd.concat(objs,     # obj指定拼接的对象
axis=0,             # axis指定拼接控制方向
join='outer',       # join指定拼接方式,outer外联方式,有的都要,inner保留相同的列
join_axes=None,     # join_axes指定连接轴
ignore_index=False, # ignore_index指定是否重新生成索引
keys=None, 
levels=None, 
names=None, 
verify_integrity=False, 
sort=None,           # sort指定对不上的列的填充
copy=True)
pd.append    df5.append(df6)
pd.merge(left, right, 
how='inner', 
on=None, 
left_on=None, right_on=None, 
left_index=False, right_index=False, 
sort=False, suffixes=('_x', '_y'), 
copy=True, 
indicator=False, 
validate=None)

pd.join

2.9 多层索引
2.10 多层索引的索引与切片

3. 读取外部表文件

read_csv :读取csv文件,也可读取网上的csv文件,传入url
read_table : 读取tsv文件
read_excel: 读取xlsx文件
html,json
read_sql(sql, con): 读取数据库
sql指定数据库操作命令
con指定连接的数据库

4. 向外部输出

to_csv|table|json|html|excel...(path):
path指定输出路径及文件名
to_sql(table, con):
table指定输出的表名
con指定连接的数据库

5. 层次化索引

Series
DataFrame

6. 索引的堆(stack)

.stack()
参数:level指定把哪一层索引放下了
列索引脱衣服
unstack()
参数:level指定把哪一层索引放下了
行索引脱衣服

7. 数据处理

重复元素
df.duplicated(subset=None, keep='first')
keep指定第一个不参与重复判断 first | last | False
df.duplicated(keep=False)
df.drop_duplicates(subset=None, keep='first', inplace=False)
keep指定保留第一个不删除 first | last | False
df.drop_duplicates(keep=False)

8.映射

8.1 Series
df.replace(to_replace=None, 
value=None, 
inplace=False, 
limit=None, 
regex=False, 
method='pad')

应用:可以用来做过滤器

8.2 DataFrame
df.replace(to_replace=None, 
value=None, 
inplace=False, 
limit=None, 
regex=False, 
method='pad')

应用:可以用来做过滤器

9.数据检测过滤

思路:查看概览,列标准差,列平均值,获取每个值和平均值的差的绝对值,和列标准差的3倍比较,获取行异常数据,删除
1) . df.describe() # 对表格数据进行描述性概览
2) . df.std() # 对每一列 求 标准差 获取到的是 Series
3). df.mean()
4). np.abs(df-df.mean())
5). np.abs(df-df.mean()) > 3*df.std()
6). (np.abs(df-df.mean()) > 3*df.std()).any(axis=1) -----(np.abs(df-df.mean()) > 3*df.std()).any()
7). df[(np.abs(df-df.mean()) > 3*df.std()).any(axis=1)]
8). idx = df[(np.abs(df-df.mean()) > 3*df.std()).any(axis=1)].index
9). df.drop(labels=idx)

10. 排序

11. 数据分类处理

数据分类处理

12.透视表

理解为表分组展示数据

pd.pivot_table(data, 
values=None, 
index=None, 
columns=None, 
aggfunc='mean', 
fill_value=None, 
margins=False, 
dropna=True, 
margins_name='All')

13. 交叉表

理解为表头分栏

pd.crosstab(index,
columns, 
values=None, 
rownames=None, 
colnames=None, 
aggfunc=None, 
margins=False, 
margins_name='All', 
dropna=True, 
normalize=False)
        
###
上一篇下一篇

猜你喜欢

热点阅读