2.pandas基础(一)
2020-04-06 本文已影响0人
羽天驿
pandas学习--基础知识(一)
一.创建查找选择空值
(1)pd.Series
import numpy as np
import pandas as pd
# pip install matplotlib
# 画图,可视化!
# 头号玩家,虚拟现实游戏,可视化,立体化
import matplotlib.pyplot as plt
# 一维的
s = pd.Series(data = [88,103,68,134,99],index = ['张三','李四','王五','老路','Jack'],
dtype=np.float32,name = 'Python')
s
<<<<<<
(2) pd.DataFrame
df = pd.DataFrame(data = np.random.randint(0,150,size=(5,3)),
index = ['张三','李四','王五','老路','Jack'],
columns=['Python','En','数学'])
df
Python En 数学
张三 117 141 47
李四 0 120 71
王五 82 37 111
老路 144 16 109
Jack 121 136 1
dataFrame是二维的数组,有行和列---行(0),列(1)
df.head(3)---查看前三条
df.tail(3)-----查看后面的三条
<<<<<<
pd.DataFrame 类型的数据:
查看列的时候直接用df[["列名"]]
查看行的时候df.loc["行名"]或者df.iloc["行索引"]
缺失值的处理:
fillna("自定义填充的空值")---缺失值的填充。
dropna(axis=0,或者1也可以不写)-----删除空值
二.基础的运算和合并
df = pd.DataFrame(data = np.random.randint(0,151,size = (10,3)),
index = list('ABCDEFHIJK'),
columns = ['Python','En','数学'])
Python En 数学
A 58 62 98
B 95 75 22
C 133 149 105
D 1 81 57
E 121 94 130
F 55 140 79
H 15 77 146
I 127 103 56
J 105 135 140
K 93 117 32
1.df["Python"]+=10,就是将python这一列的所有的数据都加上10分。
2.df.mean()---计算各行的平均值
3.round("保留小数的位数")
4.df.apply("函数的名字",axis=)--函数可以是已经有的也可以是自己定义写的函数。
计算了,最大值,最小值以及差值
def fun(x):
return x.max(),x.min(),x.max() - x.min()
df.apply(fun,axis = 1)
5.pd.concat(df1,df2,axis=0,1)---将两个pandas对象连接到一起。通过设置axis的值设置连接的方式。
6.merge--数据的融合操作
7.append--追加
三.分组计算
df = pd.DataFrame(data = {'Hand':np.random.randint(0,20,size = 200),
'sex':np.random.randint(0,2,size = 200),
'IQ':np.random.randint(35,256,size = 200),
'EQ':np.random.randint(20,512,size = 200)})
# 性别转化
def convert(x):
if x == 0:
return '女'
else:
return '男'
df['sex'] = df['sex'].apply(convert)
# 左右手进行转化
def convert2(x):
if x < 19:
return 'Right'
else:
return 'Left'
df['Hand'] = df['Hand'].apply(convert2)
df
数据:
Hand sex IQ EQ
0 Right 女 240 99
1 Right 男 243 511
2 Right 女 140 383
3 Right 男 212 258
4 Right 男 170 362
... ... ... ... ...
195 Right 女 144 447
196 Right 男 125 502
197 Right 女 168 408
198 Right 女 125 272
199 Right 女 63 71
知识点:
1. df.groupby(by = ['Hand'])[['IQ','EQ']]---根据这几个列进行分组。
四.行列的重塑
1.行变列---unstack
# pd.MultiIndex.from_product多重索引,二层
s = pd.Series(np.random.randint(0,151,size = 10),
index = pd.MultiIndex.from_product([list('ABCDE'),['期中','期末']]),
name = 'Python')
# 重塑,重新改变其形状,== numpy.reshape
# unstack stack 堆 先进先出
# 摞起来的,一堆书,落起来
# unstack将行变成列
df = s.unstack()
display(s.shape,s,'-----------------------',df.shape,df)
2.列变成行 stack
df2 = pd.DataFrame(np.random.randint(0,151,size = (5,3)),
index = list('ABCDE'),
columns=['Python','数学','En'])
# 这一步操作,就是重塑,也就是reshape
s2 = df2.stack()
display(df2,s2.shape,s2)
3.行列的转置--T