IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 初识pandas -> 正文阅读

[人工智能]初识pandas

一、 pandas是什么?

pandas是数据分析的工具。

二、读入数据

一般处理“TSV,Tab-separated values,制表符分隔值
CSV,Comma-separated values,逗号分隔值“这样的数据。

#导入包
import pandas as pd

在读入数据时,可以使用相对路径或绝对路径,注意windows平台和linux平台分隔符的区别,此处以titanic数据集为例

#分隔符默认为','逗号,也可以指定'\t'
data = pd.read_csv('./titanic/train.csv')
# data_table = pd.read_table('./titanic/train.csv')       #该方法将被弃用
#windows中绝对路径要使用双反斜线
# data2 = pd.read_csv('D:\\Develop\\code\\data_analysis\\titanic\\train.csv')
#或者使用单斜线
# data2 = pd.read_csv('D:/Develop/code/data_analysis/titanic/train.csv')
# print(data2)

分隔符不同读出的区别

data = pd.read_csv('./titanic/train.csv', sep=',')  #默认是,号分隔符
print(data.head()) #输出前5行

   PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0            1         0       3  ...   7.2500   NaN         S
1            2         1       1  ...  71.2833   C85         C
2            3         1       3  ...   7.9250   NaN         S
3            4         1       1  ...  53.1000  C123         S
4            5         0       3  ...   8.0500   NaN         S

分隔符是\t

data = pd.read_csv('./titanic/train.csv', sep='\t')
print(data.head())

  PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked
0  1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/...                             
1  2,1,1,"Cumings, Mrs. John Bradley (Florence Br...                             
2  3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,S...                             
3  4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May ...                             
4  5,0,3,"Allen, Mr. William Henry",male,35,0,0,3... 

查看部分数据

print(data.head(3))              #查看前3行
print('-------------')
print(data.tail(6))              #查看后6行

每次读取部分数据块,使用chunksize,使用循环读取每次读取到的数据块

chunker = pd.read_csv('./titanic/train.csv', chunksize=300)
for piece in chunker:
    print(piece)

三、更改列名

错误做法
#在读取数据的时候传入的names不能更改列的表头名字,只是显示的表头,注意区分这两个概念

data = pd.read_csv('./titanic/train.csv',
                   names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息','票价','仓位号','登船港口'])

#发现这样的写法是多了一个列索引,而没有改变数据第一行表示的数据字段物理含义
          乘客ID      是否幸存    仓位等级  ...       票价    仓位号      登船港口
0  PassengerId  Survived  Pclass  ...     Fare  Cabin  Embarked
1            1         0       3  ...     7.25    NaN         S
2            2         1       1  ...  71.2833    C85         C
3            3         1       3  ...    7.925    NaN         S
4            4         1       1  ...     53.1   C123         S

方法一:data.columns必须将列的名字全部写上,否则报错

data.columns = ['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息','票价','仓位号','登船港口']

data.columns = ['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息','票价','仓位号','登船港口']

方法二:使用rename函数,可以不用全部更改,传入的是字典,inplace要置为true

data.rename(columns={'PassengerId':'乘客ID',
                     'Survived':'是否幸存',
                     'Pclass':'仓位等级',
                     'Name':'姓名',
                     'Sex':'性别',
                     'Age':'年龄',
                     'SibSp':'堂兄弟/妹个数',
                     'Parch':'父母与小孩个数',
                     'Ticket':'船票信息',
                     'Fare':'票价',
                     'Cabin':'仓位号',
                     'Embarked':'登船港口'}, inplace=True)

   PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0            1         0       3  ...   7.2500   NaN         S
1            2         1       1  ...  71.2833   C85         C
2            3         1       3  ...   7.9250   NaN         S
3            4         1       1  ...  53.1000  C123         S
4            5         0       3  ...   8.0500   NaN         S

四、查看数据基本信息

print(data.info())


<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
乘客ID       891 non-null int64
是否幸存       891 non-null int64
仓位等级       891 non-null int64
姓名         891 non-null object
性别         891 non-null object
年龄         714 non-null float64
堂兄弟/妹个数    891 non-null int64
父母与小孩个数    891 non-null int64
船票信息       891 non-null object
票价         891 non-null float64
仓位号        204 non-null object
登船港口       889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.6+ KB


print(data.describe())

             乘客ID        是否幸存        仓位等级  ...     堂兄弟/妹个数     父母与小孩个数          票价
count  891.000000  891.000000  891.000000  ...  891.000000  891.000000  891.000000
mean   446.000000    0.383838    2.308642  ...    0.523008    0.381594   32.204208
std    257.353842    0.486592    0.836071  ...    1.102743    0.806057   49.693429
min      1.000000    0.000000    1.000000  ...    0.000000    0.000000    0.000000
25%    223.500000    0.000000    2.000000  ...    0.000000    0.000000    7.910400
50%    446.000000    0.000000    3.000000  ...    0.000000    0.000000   14.454200
75%    668.500000    1.000000    3.000000  ...    1.000000    0.000000   31.000000
max    891.000000    1.000000    3.000000  ...    8.000000    6.000000  512.329200
print(data.values)
print(data.shape)
print(data.columns)
print(data.index)
print(data.memory_usage())

五、保存数据

在保存数据时,我们希望将对数据做的修改保存,而不保存其他的辅助信息,比如读出数据时的行索引和列索引。
如下最左边的一列就是行索引,不是原本数据中存在的,就没必要保存的数据中,使用index=False即可。

   乘客ID  是否幸存  仓位等级  ...       票价   仓位号  登船港口
0     1     0     3  ...   7.2500   NaN     S
1     2     1     1  ...  71.2833   C85     C
2     3     1     3  ...   7.9250   NaN     S
3     4     1     1  ...  53.1000  C123     S
4     5     0     3  ...   8.0500   NaN     S

同时为了避免不同系统之间可能出现乱码的现象,可以使用utf-8的编码格式保存
以保存前5行为例

#去掉行索引,保留列索引,因为列索引是数据的第一行,即字段意义说明
data.head().to_csv('chinese_train.csv',index=False,header=True, encoding='utf-8')

乘客ID,是否幸存,仓位等级,姓名,性别,年龄,堂兄弟/妹个数,父母与小孩个数,船票信息,票价,仓位号,登船港口
1,0,3,"Braund, Mr. Owen Harris",male,22.0,1,0,A/5 21171,7.25,,S
2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38.0,1,0,PC 17599,71.2833,C85,C
3,1,3,"Heikkinen, Miss. Laina",female,26.0,0,0,STON/O2. 3101282,7.925,,S
4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35.0,1,0,113803,53.1,C123,S
5,0,3,"Allen, Mr. William Henry",male,35.0,0,0,373450,8.05,,S
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:17:53  更:2021-12-15 18:19:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 0:24:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码