本文采用的例子:kaggle上的泰坦尼克号预测
一.
1.载入数据
import pandas as pd
data=pd.read_csv("C:/Users/45168/Desktop/hands-on-data-analysis-master/第一单元项目集合/train.csv")
2.每1000行为 一个数据模块,逐块读取
chunker=pd.read_csv('C:/Users/45168/Desktop/hands-on-data-analysis-master/第一单元项目集 合/train.csv',chunksize=1000)
for piece in chunker:
print(piece)
3.将表头改为中文,并将乘客ID作为索引(删除dataframe的索引)
data = pd.read_csv('C:/Users/45168/Desktop/hands-on-data-analysis-master/第一单元项目集 合/train.csv'
, names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母 子女个数','船票信息','票价','客舱','登船港口']
,index_col='乘客ID'
,header=0)
data.head()
4.查看数据行数,列数,格式,是否包含null
#查看维度 data.shape
#查看信息 data.info()
#查看每一列数据格式 data.dtypes
#查看指定列的格式 data['乘客ID']dtype
#查看是否有空值(也可以查看指定列,方法同上) data.isnull()
#查看所有列是否有空值 data.isnull().any(axis=1) #只要该列有null或缺失值,则true,否则false,默认 axis=0表示查看列,axis=1查看行
#显示只有缺失值的行列 :data[data.isnull().values==True]
#统计列中为空的个数: data.isnull().sum()
5.查看数据前10行,后15行
data.head(10)
data.tail(15)
6.保存数据
data.to_csv(r'C:\Users\45168\Desktop\train_1.csv',encoding='utf-8')
二.Series
1.Series的创建
Series是pandas两大主要数据结构之一,是带标签(即索引)的一维数组。
test={'zjh':'M','jhn':'M','lz':'M'}
data=pd.Series(test)
data
结果如下:
zjh M
jhn M
lz M
dtype: object
DataFrame的创建
test={'name':['zjh','jhn','lz'],'sex':['M','M','M'],'age':['20','20','20']}
data=pd.DataFrame(test)
data
2. 查看数据集每列的名称
data.columns
3.查看某一列的值
法一:
data.Cabin
法二:
data['Cabin']
4.删除某一列
法一:
#导入test_1数据,test_1数据比train数据多了一列,叫’a'
del data1['a']
法二:
data1.drop('a',axis=1,inplace=True)
#axis=1表示列,0表示行
#inplace默认为False,此时屏幕显示还是原来未删除前的结果,True则显示删除后的数据,即将原始数据覆盖了
5.隐藏指定列,只观察其他列
data.drop(['PassengerId','Name','Age','Ticket'],axis=1,inplace=False)
注意这里inplace=False(默认),此时只是隐藏了,没有真正删除覆盖
6.数据筛选
6.1 筛选‘age’在10岁一下的乘客信息
data[data["Age"]<10]
6.2以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
midage=data[(data['Age']>10)&(data['Age']<50)]
midage
6.3 交、并、补操作
#创建数据
ex1=pd.DataFrame({'name':['zjh','jhn','lz'],'sex':['M','M','M'],'age':['20','20','20']})
ex2=pd.DataFrame({'name':['zjh','lz'],'sex':['M','M'],'age':['20','20']})
交集
pd.merge(ex1,ex2,on=['name','sex','age'])
并集
pd.merge(ex1,ex2,on=['name','sex','age'],how='outer')
差集
先将两个表合并,然后再去除重复值
ex2=ex2.append(ex1)
ex2.drop_duplicates(keep=False)
keep有3个参数可选:
False:去除所有重复行
first:保留第一次出现的重复行
last:保留最后一次出现的重复行
7.将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来
重置索引:
midage.reset_index(drop=True)
#drop=True 表示删除原来的索引,False表示保留原来的索引,也就是多了一列
#索引从0开始,所以先加1
midage.index+=1
midage.loc[[100],['Pclass','Sex']]
如果知道指定列的索引也可以:
midage.iloc[[100,105],[2,3,4]]
三.DataFrame
1.创建
frame = pd.DataFrame(np.arange(8).reshape((2, 4)),
index=['2', '1'],
columns=['d', 'a', 'b', 'c'])
frame
结果如下:
d | a | b | c | |
---|---|---|---|---|
2 | 0 | 1 | 2 | 3 |
1 | 4 | 5 | 6 | 7 |
2.排列
● 按列的值
frame.sort_values(by='c',ascending=True)
#True:升序 False:降序
● 按行索引
frame.sort_index()
● 按列索引
frame.sort_index(axis=1,ascending=True) #不写,默认就是True
● 任选两列数据同时降序排序
frame.sort_values(by=['a', 'c'], ascending=False)
3.算术计算
直接相加即可,两个DataFrame相加后,会返回一个新的DataFrame,对应的行和列的值会相加,没有对应的会变成空值NaN
计算出在船上最大的家族有多少人(‘兄弟姐妹个数’+‘父母子女个数’)
max(data['兄弟姐妹个数']+data['父母子女个数'])
4.查看基本统计信息(describe函数)
#创建一个数据集
frame2 = pd.DataFrame([[1.4, np.nan],
[7.1, -4.5],
[np.nan, np.nan],
[0.75, -1.3]
], index=['a', 'b', 'c', 'd'], columns=['one', 'two'])
frame2
frame2.describe()
查看 子女 这一列的数据统计信息
data['子女'].describe()