import pandas as pd
1、文件读取:dataframe
df = pd.read_csv('./data/titanic.csv') #代码目录下的data文件夹里的csv
同R语言,
df.head() #默认前5条
df.tail() #默认后5条
df.info #返回当前信息
><class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId 891 non-null int64
Survived 891 non-null int64
Pclass 891 non-null int64
Name 891 non-null object
Sex 891 non-null object
Age 714 non-null float64 #有缺失
SibSp 891 non-null int64
Parch 891 non-null int64
Ticket 891 non-null object
Fare 891 non-null float64
Cabin 204 non-null object
Embarked 889 non-null object
dtypes: float64(2), int64(5), object(5)
df.index() #查看索引
>RangeIndex(start=0, stop=891, step=1)
df.columns() #返回列名
>Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
dtype='object')
df.dtypes #返回类型
df.values #返回一个array类型
2、创建一个dataframe
data = {'country':['aaa','bbb','ccc'],
'population':[10,12,14]} #字典
df_data = pd.DataFrame(data)
3、取数据
age = df['Age']
age[:5] #打印前五行
4、指定索引:
df = df.set_index('Name')
5、dataframe基本信息
df.describe()
6、索引结构:
loc 用label来去定位
iloc 用position来去定位
df.iloc[0:5]
df.iloc[0:5,1:3]
df.loc['Heikkinen, Miss. Laina']
df.loc['Heikkinen, Miss. Laina':'Allen, Mr. William Henry',:]
对于bool类型:
df['Fare'] > 40
可以判断Fare列是否大于40,返回一个bool类型。
采用:
df[df['Fare'] > 40][:5]
df[df['Sex'] == 'male'][:5]
df.loc[df['Sex'] == 'male','Age'].mean()
7、groupby
df = pd.DataFrame({'key':['A','B','C','A','B','C','A','B','C'],
'data':[0,5,10,5,10,15,10,15,20]})
对于这样一个数据框,求key=‘A’,‘B’,‘C’时,data的平均值,若用python:
for key in ['A','B','C']:
print (key,df[df['key'] == key].sum())
采用groupby:
df.groupby('key').sum()
显然更加简便。
另外:
import numpy as np
df.groupby('key').aggregate(np.mean) #求均值
df.groupby('Sex')['Age'].mean()
8.数学运算
df.cov()
df.corr()
df['Age'].value_counts()(ascending = True) #统计个数,每个值有多少个,升序
df['Age'].value_counts(ascending = True,bins = 5) #分成5个区间