一、 pandas是什么?
pandas是数据分析的工具。
二、读入数据
一般处理“TSV,Tab-separated values,制表符分隔值 CSV,Comma-separated values,逗号分隔值“这样的数据。
import pandas as pd
在读入数据时,可以使用相对路径或绝对路径,注意windows平台和linux平台分隔符的区别,此处以titanic数据集为例
data = pd.read_csv('./titanic/train.csv')
分隔符不同读出的区别
data = pd.read_csv('./titanic/train.csv', sep=',')
print(data.head())
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))
print('-------------')
print(data.tail(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
|