数据处理库Pandas(简单操作)

1.pandas介绍
    1.什么是pandas
        pand - panel data为面板数据
        as - analysis为分析
        综上所述为面板数据分析。面板数据为三维数据。但是目前由于pandas的发展,现在三维数据结构panel已经不经常使用了。
    2.为什么用pandas
        这里我们之前的博客中已经讲解了numpy和matplotlib库,一个用来计算,一个用来数据可视化,那么我们为什么还介绍pandas?原因在于,pandas比numpy显示的数据更全面,展现的是存在行索引和列索引的ndarray。对于matplotlib来讲,pandas可以利用极简的代码来可视化。注意这里pandas的底层也是numpy库和matplotlib库
    3.pandas的数据结构
        1.series:含有行索引的一维数组
        2.dataframe:series的容器,既有行索引,又有列索引
        3.panel:dataframe的容器
2.dataframe属性和方法
    属性:
        1.shape属性
        2.index属性
        3.columns属性
        4.values属性,返回的是一个二维数组ndarray,不带有索引
        5.T属性,返回行列转换的二维表(dataframe)
    方法:
        1.head(),查看头样本,如果不传入数值,那么返回前五行的样本
        2.tail(),查看尾样本,如果不传入数值,那么返回后五行的样本
3.dataframe索引设置
    1.dataframe.index = 
    2.dataframe.reset_index(),不常用
    3.dataframe.set_index(),不常用
4.series属性和方法
    1.index属性
    2.values属性
    3.head方法
    4.tail方法
5.索引操作
    1.直接索引
        df['行名称']['列名称']
        注意这里如果想直接索引的话,要先行后列的顺序进行。
    2.名称索引
        df.loc['行名称', '列名称']
        注意,这里的索引方法就是包含前,也包含后。
    3.数值索引
        df.iloc[行索引,列索引]
        注意,这里的索引方式就是包含前不包含后。
    4.复合索引
        df.ix[行索引,'列名称']
        注意:这个方法目前已经不建议使用了。
6.赋值和排序
    1.赋值:索引 ——》赋值
        这里需要注意的是,我们只能通过名称索引和数值索引才能进行赋值,直接索引是不能赋值的。总的来讲就是赋值只能通过loc或者iloc进行。
    2.排序:
        1.按照value索引
            sort_values(by=, ascending=)
                by:传入列索引或者传入一个由列索引组成的列表,按照顺序进行排序。
                ascending:传入bool值,指定从大到小或者从小到大。
        2.按照index索引
            sort_index()

 dataframe属性

 代码:

import pandas as pd
import numpy as np

np.random.seed(22)
data = np.random.normal(0, 1, size=(10, 5))
data_df = pd.DataFrame(data, columns=['red', 'yellow', 'purple', 'green', 'black'], index=['样本{}'.format(i) for i in range(1, 11)])
print(data_df.head())
print('shape属性:\n', data_df.shape)
print('columns属性:\n', data_df.columns)
print('index属性:\n', data_df.index)
print('values属性:\n', data_df.values)

输出:

          red    yellow    purple     green     black
样本1 -0.091950 -1.463351  1.081792 -0.239325 -0.491129
样本2 -1.002272  0.918822 -1.103632  0.626493 -0.561514
样本3  0.028855 -0.230767  0.587752  0.752318 -1.058503
样本4  1.055972  0.747750  1.064677  1.520130 -1.488603
样本5  1.859990 -1.598613 -0.646074  0.337325  1.046729
shape属性:
 (10, 5)
columns属性:
 Index(['red', 'yellow', 'purple', 'green', 'black'], dtype='object')
index属性:
 Index(['样本1', '样本2', '样本3', '样本4', '样本5', '样本6', '样本7', '样本8', '样本9', '样本10'], dtype='object')
values属性:
 [[-0.09194992 -1.46335065  1.08179168 -0.23932517 -0.49112914]
 [-1.00227201  0.9188215  -1.1036321   0.62649346 -0.56151378]
 [ 0.02885512 -0.23076719  0.58775221  0.75231758 -1.05850255]
 [ 1.05597241  0.74775027  1.06467659  1.52012959 -1.48860294]
 [ 1.85998989 -1.59861303 -0.64607361  0.337325    1.04672873]
 [ 0.62914334  0.36305909  0.5557497  -1.08854953  0.02369477]
 [ 2.49917664 -2.49003039 -0.23486239 -0.09756346 -0.88652934]
 [-0.13671324  0.10197893 -0.25092954 -0.0788123  -1.08516417]
 [ 0.59492845 -0.63890807 -1.10783686  2.10614576 -0.56738777]
 [-0.47994979 -1.92322986  0.39958854 -1.04818387 -0.6938787 ]]

 dataframe方法

代码:

import pandas as pd
import numpy as np

np.random.seed(22)
data = np.random.normal(0, 1, size=(10, 5))
data_df = pd.DataFrame(data, columns=['red', 'yellow', 'purple', 'green', 'black'], index=['样本{}'.format(i) for i in range(1, 11)])

# head()方法
# data_df.head(3)
# tail()方法
data_df.tail()

输出:

           red    yellow    purple     green     black
样本6   0.629143  0.363059  0.555750 -1.088550  0.023695
样本7   2.499177 -2.490030 -0.234862 -0.097563 -0.886529
样本8  -0.136713  0.101979 -0.250930 -0.078812 -1.085164
样本9   0.594928 -0.638908 -1.107837  2.106146 -0.567388
样本10 -0.479950 -1.923230  0.399589 -1.048184 -0.693879

 dataframe索引设置

代码:

import pandas as pd
import numpy as np

np.random.seed(22)
data = np.random.normal(0, 1, size=(10, 5))
data_df = pd.DataFrame(data, columns=['red', 'yellow', 'purple', 'green', 'black'], index=['样本{}'.format(i) for i in range(1, 11)])

# 方式一:利用dataframe的index属性和columns属性,最常用的方法
data_df.index = ['样本{}__'.format(i) for i in range(1, 11)]
print(data_df)

# 方式二:重新设置索引reset_index(),这种方法不常用。

# 方式三:设置索引set_index(),这种方法也不常用。

# 不常用的方法,就不讲解了。

输出:

             red    yellow    purple     green     black
样本1__  -0.091950 -1.463351  1.081792 -0.239325 -0.491129
样本2__  -1.002272  0.918822 -1.103632  0.626493 -0.561514
样本3__   0.028855 -0.230767  0.587752  0.752318 -1.058503
样本4__   1.055972  0.747750  1.064677  1.520130 -1.488603
样本5__   1.859990 -1.598613 -0.646074  0.337325  1.046729
样本6__   0.629143  0.363059  0.555750 -1.088550  0.023695
样本7__   2.499177 -2.490030 -0.234862 -0.097563 -0.886529
样本8__  -0.136713  0.101979 -0.250930 -0.078812 -1.085164
样本9__   0.594928 -0.638908 -1.107837  2.106146 -0.567388
样本10__ -0.479950 -1.923230  0.399589 -1.048184 -0.693879

 Series的属性和方法

代码:

import pandas as pd
import numpy as np

np.random.seed(22)
data = np.random.normal(0, 1, size=(10, 5))
data_df = pd.DataFrame(data, columns=['red', 'yellow', 'purple', 'green', 'black'], index=['样本{}'.format(i) for i in range(1, 11)])

sr = data_df.iloc[0, :]

print(sr)
print(sr.index)
print(sr.values)
print(sr.head())
print(sr.tail())

输出:

red      -0.091950
yellow   -1.463351
purple    1.081792
green    -0.239325
black    -0.491129
Name: 样本1, dtype: float64
Index(['red', 'yellow', 'purple', 'green', 'black'], dtype='object')
[-0.09194992 -1.46335065  1.08179168 -0.23932517 -0.49112914]
red      -0.091950
yellow   -1.463351
purple    1.081792
green    -0.239325
black    -0.491129
Name: 样本1, dtype: float64
red      -0.091950
yellow   -1.463351
purple    1.081792
green    -0.239325
black    -0.491129
Name: 样本1, dtype: float64

 索引操作

代码:

import pandas as pd
import numpy as np

np.random.seed(22)
data = np.random.normal(0, 1, size=(10, 4))
data_df = pd.DataFrame(data, index=['样本{}'.format(i) for i in range(1, 11)], columns=['red', 'yellow', 'purple', 'green'])

# 1.直接索引
print(data_df['red'][0])

# 2.名称索引
print(data_df.loc['样本1': '样本5', 'red':'green'])

# 3.数值索引
print(data_df.iloc[0: 5, 0: 3])

# 4.混合索引
# print(data_df.ix[0: 5, 'red':'green'])
# 在我使用的pandas的版本中ix方法已经不能使用了

输出:

-0.0919499198651913
          red    yellow    purple     green
样本1 -0.091950 -1.463351  1.081792 -0.239325
样本2 -0.491129 -1.002272  0.918822 -1.103632
样本3  0.626493 -0.561514  0.028855 -0.230767
样本4  0.587752  0.752318 -1.058503  1.055972
样本5  0.747750  1.064677  1.520130 -1.488603
          red    yellow    purple
样本1 -0.091950 -1.463351  1.081792
样本2 -0.491129 -1.002272  0.918822
样本3  0.626493 -0.561514  0.028855
样本4  0.587752  0.752318 -1.058503
样本5  0.747750  1.064677  1.520130

 赋值与排序

代码:

import pandas as pd
import numpy as np

np.random.seed(22)
data = np.random.normal(0, 1, size=(10, 4))
df = pd.DataFrame(data, columns=['red', 'yellow', 'balck', 'green'])

# 赋值操作
df.loc['4', :] = 100

# 元素排序排序操作
df1 = df.sort_values(by=['red', 'yellow'], ascending=[False, True])  # red从大到小排序, yellow从大到小
print(df1)

# 索引排序操作
# df2 = df.sort_index()  # 索引从小大到大排序
# help(df1.sort_index)

df = pd.DataFrame([1, 2, 3, 4, 5], index=[100, 29, 234, 1, 150], columns=['A'])

print(df.sort_index())

输出:

        red      yellow       balck       green
4  100.000000  100.000000  100.000000  100.000000
5    1.859990   -1.598613   -0.646074    0.337325
6    1.046729    0.629143    0.363059    0.555750
4    0.747750    1.064677    1.520130   -1.488603
2    0.626493   -0.561514    0.028855   -0.230767
3    0.587752    0.752318   -1.058503    1.055972
9    0.101979   -0.250930   -0.078812   -1.085164
0   -0.091950   -1.463351    1.081792   -0.239325
8   -0.234862   -0.097563   -0.886529   -0.136713
1   -0.491129   -1.002272    0.918822   -1.103632
7   -1.088550    0.023695    2.499177   -2.490030
     A
1    4
29   2
100  1
150  5
234  3

学习地址:

黑马程序员Python教程,4天快速入门Python数据挖掘,系统精讲+实战案例_哔哩哔哩_bilibili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值