第一章:数据载入及初步观察
1.1:载入数据
1.1.1:导入numpy和pandas
import numpy as np
import pandas as pd
1.1.2:导入数据
pd. read_csv( 'train.csv' )
df. shape
df. head( )
df. T
import os
os. path. abspath( 'train.csv' )
path = os. path. abspath( 'train.csv' )
pd. read_csv( path)
pd. read_table( path)
pd. read_table( path)
1.1.3:每1000行为一个数据模块,逐块读取
df = pd. read_csv( 'train.csv' , chunksize= 1000 )
df. get_chunk( )
1.1.4:将表头改成中文,索引改为乘客ID
df = pd. read_csv( 'train.csv' )
df. columns = [ '乘客ID' , '是否幸存' , '乘客等级(1/2/3等舱位)' , '乘客姓名' , '性别' , '年龄' , '堂兄弟/妹个数' , '父母与小孩个数' , '船票信息' , '票价' , '客舱' , '登船港口' ]
df = pd. read_csv( 'train.csv' , names= [ '乘客ID' , '是否幸存' , '乘客等级(1/2/3等舱位)' , '乘客姓名' , '性别' , '年龄' , '堂兄弟/妹个数' , '父母与小孩个数' , '船票信息' , '票价' , '客舱' , '登船港口' ] )
1.2:初步观察
1.2.1:查看数据的基本信息
df. info( ) :
df. describe( ) :
df. values:
df. to_numpy( )
df. shape:
df. columns:
df. columns. values:
df. index:
df. index. values:
df. head( n) :
df. tail( n) :
pd. options. display. max_columns= n:
pd. options. display. max_rows= n:
df. memory_usage( ) :
1.2.2:观察表格前10行的数据和后15行的数据
df. tail( 15 )
df. head( 10 )
1.2.3:判断数据是否为空,为空的地方返回True,其余地方返回False
pd. isnumll
1.3:保存数据
1.3.1:将你加载并做出改变的数据,在工作目录下保存为一个新文件train_chinese.csv
df. to_csv( 'train_chinese.csv' )
1.4:知道你的数据叫什么
1.4.1:pandas中有两个数据类型DateFrame和Series
import numpy as np
import pandas as pd
sdata = { 'Ohio' : 35000 , 'Texas' : 71000 , 'Oregon' : 16000 , 'Utah' : 5000 }
example_1 = pd. Series( sdata)
example_1
data = { 'state' : [ 'Ohio' , 'Ohio' , 'Ohio' , 'Nevada' , 'Nevada' , 'Nevada' ] ,
'year' : [ 2000 , 2001 , 2002 , 2001 , 2002 , 2003 ] , 'pop' : [ 1.5 , 1.7 , 3.6 , 2.4 , 2.9 , 3.2 ] }
example_2 = pd. DataFrame( data)
example_2
1.4.2:根据上节课的方法载入"train.csv"文件
df = pd. read_csv( '/Users/chenandong/Documents/datawhale数据分析每个人题目设计/titanic/train.csv' )
df. head( )
1.4.3:查看DataFrame数据的每列的名称
df. columns
1.4.4:查看"Cabin"这列的所有值
df[ 'Cabin' ] . head( )
df. Cabin. head( )
type ( df. Cabin)
1.4.5:加载文件"test_1.csv",然后对比"train.csv",看看有哪些多出的列,然后将多出的列删除
test_1 = pd. read_csv( 'test_1.csv' )
test_1. head( )
del test_1[ 'a' ]
test_1. pop( 'a' )
test_1. drop( [ 'a' ] , axis= 1 )
test_1. drop( [ 'a' ] , axis= 1 , inplace= True )
1.4.6: 将[‘PassengerId’,‘Name’,‘Age’,‘Ticket’]这几个列元素隐藏,只观察其他几个列元素
test_1. drop( [ 'PassengerId' , 'Name' , 'Age' , 'Ticket' ] , axis= 1 )
test_1. head( )
1.5:筛选的逻辑
1.5.1:我们以"Age"为筛选条件,显示年龄在10岁以下的乘客信息
test_1[ "Age" ] < 10
test_1[ test_1[ "Age" ] < 10 ]
1.5.2:以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
midage = test_1[ ( test_1[ "Age" ] > 10 ) & ( test_1[ "Age" ] < 50 ) ]
midage. head( )
1.5.3:将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来
midage = midage. reset_index( drop= True )
midage. head( )
midage. loc[ [ 100 ] , [ 'Pclass' , 'Sex' ] ]
1.5.4:使用loc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
midage. loc[ [ 100 , 105 , 108 ] , [ 'Pclass' , 'Name' , 'Sex' ] ]
1.5.5:使用iloc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
midage. iloc[ [ 100 , 105 , 108 ] , [ 2 , 3 , 4 ] ]
1.6了解你的数据吗?
1.6.1:利用Pandas对示例数据进行排序,要求升序
frame = pd. DataFrame( np. random. randn( 3 , 3 ) ,
index= list ( '123' ) ,
columns= list ( 'acb' ) )
frame
frame. sort_values( 'b' )
frame. sort_index( )
frame. sort_index( axis= 1 )
frame. sort_index( axis= 1 , ascending= False )
frame. sort_values( by= [ 'a' , 'c' ] , ascending= False )
1.6.2:对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序(降序排列),从数据中你能发现什么
text. sort_values( by= [ '票价' , '年龄' ] , ascending= False )
text. sort_values( by= [ '年龄' , '票价' ] , ascending= False )
1.6.3:利用Pandas进行算术计算,计算两个DataFrame数据相加结果
x = pd. DataFrame( np. random. randn( 3 , 3 ) ,
index= list ( '123' ) ,
columns= list ( 'acb' ) )
y = pd. DataFrame( np. random. randn( 3 , 3 ) ,
index= list ( '423' ) ,
columns= list ( 'acf' ) )
x + y
1.6.4:通过泰坦尼克号数据如何计算出在船上最大的家族有多少人?
max ( text[ '兄弟姐妹个数' ] + text[ '父母子女个数' ] )
1.6.5:学会使用Pandas describe()函数查看数据基本统计信息
df. describe( )
from matplotlib pyplot as plt
plt. hist( df[ '年龄' ] )
1.6.6:分别看看泰坦尼克号数据集中 票价、父母子女 这列数据的基本统计数据,你能发现什么?
df[ '票价' ] . describe( )
text[ '父母子女个数' ] . describe( )