python_机器学习—数据科学库_DAY04

1893-赵同学

发表文章数:19

热门标签

, ,
首页 » Python » 正文
  • numpy能够帮助我们处理数值,但是pandas除了处理数值之外(基于numpy),还能够帮助我们处理其他类型的数据

pandas的常用数据类型

1. Series 一维,带标签数组

(1). Serise的创建

import string

import numpy as np
import pandas as pd

t=pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
print(t)
print(type(t))
a = {string.ascii_uppercase[i]:i for i in range(10)}  #字典推导式创建一个字典a
print(a)
print(pd.Series(a))
a = pd.Series(a,index=list(string.ascii_uppercase[5:15]))   #从6开始往后数,不行就为空
print(a)

运行结果:
A    0
B    1
C    2
D    3
E    4
F    5
G    6
H    7
I    8
J    9
dtype: int32
<class 'pandas.core.series.Series'>
{'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8, 'J': 9}
A    0
B    1
C    2
D    3
E    4
F    5
G    6
H    7
I    8
J    9
dtype: int64
F    5.0
G    6.0
H    7.0
I    8.0
J    9.0
K    NaN
L    NaN
M    NaN
N    NaN
O    NaN
dtype: float64

(2). Series切片和索引

#coding=utf-8                                                                         
import string                                                                         
                                                                                      
import numpy as np                                                                    
import pandas as pd                                                                   
                                                                                      
t=pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))                    
print(t[2:10:2]) #正常切片                                                                
print(t[[2,3,6]])  #两个中括号 意思是取     3,4,7行                                             
print(t[t>4])     #取t大于4的                                                             
print(t['F'])     #F对应的行信息     

运行结果:
C    2
E    4
G    6
I    8
dtype: int32
C    2
D    3
G    6
dtype: int32
F    5
G    6
H    7
I    8
J    9
dtype: int32
5                                                       

(3). Series的索引和值

import string           
                        
import numpy as np      
import pandas as pd     
                        
t=pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))  
print(t.index)          
print(type(t.index))    
print(t.values)         
print(type(t.values))   

运行结果:
Index(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'], dtype='object')
<class 'pandas.core.indexes.base.Index'>
[0 1 2 3 4 5 6 7 8 9]
<class 'numpy.ndarray'>            

(4). 读取外部数据

import pandas as pd
from pymongo import MongoClient
df=pd.read_csv('文件路径')
df = df.sort_values(by='对应文件路径下,某一列的标题',ascending=False)  #True是升序,False是降序

2. DataFrame 二维,Series容器

(1). DataFrame的基础属性

import string

import numpy as np
import pandas as pd

t = pd.DataFrame(np.arange(12).reshape((3,4)),index=list(string.ascii_uppercase[:3]),columns=list(string.ascii_uppercase[-4:]))
#string.ascii_uppercase[-4:]   从字母后面取四个标记到相应位置
print(t)
print(t.shape)  #行数列数
print(t.dtypes)   #裂数据类型
print(t.ndim)  #数据维度
print(t.index)  #行索引
print(t.columns)  #列索引
print(t.values)  #对象值,二维ndarray数组

运行结果:
   W  X   Y   Z
A  0  1   2   3
B  4  5   6   7
C  8  9  10  11
(3, 4)
W    int32
X    int32
Y    int32
Z    int32
dtype: object
2
Index(['A', 'B', 'C'], dtype='object')
Index(['W', 'X', 'Y', 'Z'], dtype='object')
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

(2). DataFrame的整体情况查询

import string

import numpy as np
import pandas as pd

t = pd.DataFrame(np.arange(12).reshape((3,4)),index=list(string.ascii_uppercase[:3]),columns=list(string.ascii_uppercase[-4:]))
#string.ascii_uppercase[-4:]   从字母后面取四个标记到相应位置
print(t)
print(t.head(2))   #显示头部几行,默认5行
print(t.tail(2))   #显示末尾几行,默认5行
print(t.info())    #相关信息概览:行数,列数,列索引,列非空值个数,列类型等
print(t.describe())  #快速综合统计结果:计数,均值,标准差等等

运行结果:
W  X   Y   Z
A  0  1   2   3
B  4  5   6   7
C  8  9  10  11
   W  X  Y  Z
A  0  1  2  3
B  4  5  6  7
   W  X   Y   Z
B  4  5   6   7
C  8  9  10  11
<class 'pandas.core.frame.DataFrame'>
Index: 3 entries, A to C
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   W       3 non-null      int32
 1   X       3 non-null      int32
 2   Y       3 non-null      int32
 3   Z       3 non-null      int32
dtypes: int32(4)
memory usage: 72.0+ bytes
None
         W    X     Y     Z
count  3.0  3.0   3.0   3.0
mean   4.0  5.0   6.0   7.0
std    4.0  4.0   4.0   4.0
min    0.0  1.0   2.0   3.0
25%    2.0  3.0   4.0   5.0
50%    4.0  5.0   6.0   7.0
75%    6.0  7.0   8.0   9.0
max    8.0  9.0  10.0  11.0

3. loc与iloc

  1. df.loc 通过标签索引行数据
  2. df.iloc 通过位置获取行数据
  • loc要写行或者列的名字
import string

import numpy as np
import pandas as pd

t = pd.DataFrame(np.arange(12).reshape((3,4)),index=list(string.ascii_uppercase[:3]),columns=list(string.ascii_uppercase[-4:]))
#string.ascii_uppercase[-4:]   从字母后面取四个标记到相应位置
print(t)
print(t.loc['A','W'])
print(t.loc['A',['W','X']])
print(type(t.loc['A',['W','X']]))
print(t.loc[['A','B'],['W','Z']])
print(t.loc['A':'C',['W','X']])  #特殊这个冒号是完全的闭区间
t.loc['A','W']=10   #改变某一行的数字
print(t)

运行结果:
   W  X   Y   Z
A  0  1   2   3
B  4  5   6   7
C  8  9  10  11
0
W    0
X    1
Name: A, dtype: int32
<class 'pandas.core.series.Series'>
   W  Z
A  0  3
B  4  7
   W  X
A  0  1
B  4  5
C  8  9
    W  X   Y   Z
A  10  1   2   3
B   4  5   6   7
C   8  9  10  11
  • iloc写数字
print(t.iloc[1:3,[2,3]])
t.iloc[0,0]=0
print(t)
运行结果:
    Y   Z
B   6   7
C  10  11
   W  X   Y   Z
A  0  1   2   3
B  4  5   6   7
C  8  9  10  11

4. 布尔索引

import string

import numpy as np
import pandas as pd
from pymongo import MongoClient
df = pd.read_csv('./dogNames2.csv')
df = df.sort_values(by='Count_AnimalName',ascending=False)
print(df[(df['Count_AnimalName']>700)&(df['Row_Labels'].str.len()>4)])  #取两列且有限制条件

运行结果:
      Row_Labels  Count_AnimalName
1156       BELLA              1195
2660     CHARLIE               856
12368      ROCKY               823
8552       LUCKY               723

5. 字符串方法

python_机器学习—数据科学库_DAY04

6. 缺失数据的处理

import string

import numpy as np
import pandas as pd

t = pd.DataFrame(np.arange(12).reshape((3,4)),index=list(string.ascii_uppercase[:3]),columns=list(string.ascii_uppercase[-4:]))
#string.ascii_uppercase[-4:]   从字母后面取四个标记到相应位置
print(t)
t.loc['A':'B','W']=np.nan
print(pd.isnull(t))
# t.dropna(axis=0,how='any',inplace=True)
#删除为nan的那些行或者列  axis是选择轴,
# how是决定是整行都是nan的删除还是部分是nan的就删除
# inplace代表原地修改 如果为True就在原数列上做出改动
print(t)
print(t.fillna(t.mean()))   
#用numpy很长的代码替换均值,用pandas一行就解决了 t.fillna()括号中可以直接输入想要替换的数字
print(t['X'].fillna(t['X'].mean()))#只改变其中一行的值

运行结果:
   W  X   Y   Z
A  0  1   2   3
B  4  5   6   7
C  8  9  10  11
    Y   Z
B   6   7
C  10  11
       W      X      Y      Z
A   True  False  False  False
B   True  False  False  False
C  False  False  False  False
     W  X   Y   Z
A  NaN  1   2   3
B  NaN  5   6   7
C  8.0  9  10  11
     W  X   Y   Z
A  8.0  1   2   3
B  8.0  5   6   7
C  8.0  9  10  11
A    1
B    5
C    9
Name: X, dtype: int32

未经允许不得转载:作者:1893-赵同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《python_机器学习—数据科学库_DAY04》 发布于2021-10-12

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录