美文网首页
2.pandas基础(一)

2.pandas基础(一)

作者: 羽天驿 | 来源:发表于2020-04-06 16:10 被阅读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

五、索引的设置

* DataFrame可以通过set_index方法,可以设置单索引和复合索引。

* DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)

* append添加新索引,drop为False,inplace为True时,索引将会还原为列

* reset_index可以还原索引,重新变为默认的整型索引

* DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=”)

* level控制了具体要还原的那个等级的索引

* drop为False则索引列会被还原为普通列,否则会丢失

* pandas读取excel时,表格中有多个sheet时,读取指定的表格:

* data=pd.read_excel("./表格路径名字.xlsx",sheet_name=' sheet的名字')

相关文章

网友评论

      本文标题:2.pandas基础(一)

      本文链接:https://www.haomeiwen.com/subject/sunilhtx.html