Pandas初识

目录

 

1.导入所需模块

2.应用示例

2.1泰坦尼克号乘客数据

2.2时间序列:欧洲的空气质量测量

3.数据类型:DataFrame 和 Series

3.1DataFrame

3.2一维数据Series(日期栏)

4.数据导入和导出

5.科研

6.数据选择和过滤

索引可用函数loc 和 iloc

7.数据分析方法

7.1列数之和

7.2Groupby:分组


 

1.导入所需模块

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

pd.options.display.max_rows = 8

2.应用示例

2.1泰坦尼克号乘客数据

#导入数据
df = pd.read_csv("titanic.csv")
#查看前5列数据
df.head()

#按年龄分列的乘客分布情况
df['Age'].hist()

#生存概率如何取决于性别?
df.groupby('Sex')[['Survived']].aggregate(lambda x: x.sum() / len(x))

#存活的概率如何取决于票的等级?
color_list = list('rgbkymc')
df.groupby('Pclass')['Survived'].aggregate(lambda x: x.sum() / len(x)).plot(kind='bar', color=color_list)

2.2时间序列:欧洲的空气质量测量

data = pd.read_csv('20000101_20161231-NO2.csv', sep=';', skiprows=[1], na_values=['n/d'], index_col=0, parse_dates=True)
data.head()

#这些年来,空气污染是否会减少?
data['1999':].resample('M').mean().plot(ylim=[0,120])

data['1999':].resample('A').mean().plot(ylim=[0,100])

 

3.数据类型:DataFrame 和 Series

3.1DataFrame

表格数据类型(数据存储的多维对象),由行和列组成,类似于数据库中的表格。可以认为,一个数据框是一组具有一个索引的对象。

df

数据框架属性
除了索引属性外,数据框还有列属性。

df.index

df.columns

列的类型

df.dtypes

关于各列的概况信息,可以通过以下方法获得。info()

df.info()

另外,数据帧有一个属性是value()

df.values

创建数据框的数据可以从外部来源导入:文本文件、Excel、数据库。创建数据框的常用方法还有从字典(dict)列表或数组(array)转换。

data = {'country': ['Belgium', 'France', 'Germany', 'Netherlands', 'United Kingdom'],
        'population': [11.3, 64.3, 81.3, 16.9, 64.9],
        'area': [30510, 671308, 357050, 41526, 244820],
        'capital': ['Brussels', 'Paris', 'Berlin', 'Amsterdam', 'London']}
df_countries = pd.DataFrame(data)
df_countries

3.2一维数据Series(日期栏)

df['Age']

age = df['Age']

Series的属性index 和 values

age.index

你可以获得numpy数组的属性用.values

age.values[:10]

就像使用numpy数组一样,可以使用索引来获取值。

age[0]

与numpy数组不同的是,索引可以是非数值的。

df = df.set_index('Name')
df

age = df['Age']
age

age['Miss. Margaret Edith Graham']

与numpy数组一样,许多函数可以应用于数据帧和序列。例如,初级运算。

age * 1000

方法:

age.mean()

使用布尔变量列表进行索引。

age[age > 70]

pandas的具体方法:

df['Fare'].value_counts()

4.数据导入和导出

Pandas支持多种格式。

  • CSV, text
  • SQL database
  • Excel
  • HDF5
  • json
  • html
  • pickle
  • sas, stata
  • (parquet)
  • ...
df = pd.read_csv("titanic.csv")
df.head()

5.科研

有用的方法(特别是当数据框包含数百万行时)。head 和 tail

df.head(3)

df.tail()

df.info()

获取数据的信息,可用describe

df.describe()

数据可视化

df.plot(kind='box', ylim=[0,100])

df['Age'].plot(kind='hist', bins=50)

 

选取最后500行的数据

df[-500:].plot(figsize=(12,6))

 

6.数据选择和过滤

df = pd.read_csv("titanic.csv")

栏目选择

df['Age']

选择多列

df[['Age', 'Fare']]

数值索引选择行。

df[10:15]

索引可用函数loc 和 iloc

loc: 按值选择
iloc:按位置选择

df = df.set_index('Name')
df.loc['Mr. Owen Harris Braund', 'Fare']

df.iloc[0:2,1:3]

您也可以使用索引方法为以下内容赋值

df.loc['Mr. Owen Harris Braund', 'Survived'] = 100
df

布尔索引(过滤)

私家的需要根据一定的条件来选择行。索引器或布尔掩码必须是一维的,并且与索引对象的长度相同。

df['Fare'] > 50

df[df['Fare'] > 50]

创建一个新的演示数据框

df = pd.DataFrame({'key':['A','B','C','A','B','C','A','B','C'],
                   'data': [0, 5, 10, 5, 10, 15, 10, 15, 20]})
df

 

7.数据分析方法

7.1列数之和

df['data'].sum()

在很多情况下,数据有不同的组,在这种情况下,你可以这样做。

for key in ['A', 'B', 'C']:
    print(key, df[df['key'] == key]['data'].sum())

但是这样做并不是很方便,尤其是在群体多的时候。

7.2Groupby:分组

"分组 "概念:我们想将函数应用于数据框中被某种标准划分的某些部分。

很像是SQL方法。GROUP BY

而不是如上的手动过滤。

df[df['key'] == "A"].sum()
df[df['key'] == "B"].sum()
...

pandas和groupby方法可以做到以下几点。

df.groupby('key').sum()

df.groupby('key').aggregate(np.sum)  # 'sum'

还有很多其他方式。

df.groupby('key')['data'].sum()

7.3sort_values()

pandas中的sort_values()函数原理类似于SQL中的order by,可以将数据集依照某个字段中的数据进行排序,该函数即可根据指定列数据也可根据指定行的数据排序。

用法:
DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)

参数说明

参数    说明
by    指定列名(axis=0或’index’)或索引值(axis=1或’columns’)
axis    若axis=0或’index’,则按照指定列中数据大小排序;若axis=1或’columns’,则按照指定索引中数据大小排序,默认axis=0
ascending    是否按指定列的数组升序排列,默认为True,即升序排列
inplace    是否用排序后的数据集替换原来的数据,默认为False,即不替换
na_position    {‘first’,‘last’},设定缺失值的显示位置
 

 

Pandas还允许使用merge()、concat()、stack()方法、dropna()、fillna()和其他许多方法другое¶合并数据帧。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值