**
pandas
**
pandas是Python核心数据分析库,它提供了快速、灵活、明确的数据结构,能够简单、直观、快速地处理各类的数据。
https://pandas.pydata.org/docs/
import pandas as pd
Series对象
一种类似一维数组的数据结构
##创建Series对象
s1=pd.Series([2,3,5])
print(s1)
0 2
1 3
2 5
dtype: int64
手动设置Series索引
s1=pd.Series(data=[2,3,5],index=['a','b','c'])
print(s1)
a 2
b 3
c 5
dtype: int64
Series 的索引和切片
s1[2]
5
s1['c']
5
print(s1[1:3])
b 3
c 5
dtype: int64
s1
a 2
b 3
c 5
dtype: int64
print(s1['a':'c'])
a 2
b 3
c 5
dtype: int64
print(s1[['a','c']])
a 2
c 5
dtype: int64
获取Series的索引和值
s1=pd.Series([2,3,['abc','dd']],index=['a','b','c'])
print(s1)
a 2
b 3
c [abc, dd]
dtype: object
print(s1.index)
Index(['a', 'b', 'c'], dtype='object')
print(s1.values)
[2 3 5]
DataFrame对象
创建DataFrame对象
df1=pd.DataFrame(data=[[1,2,3],[4,5,6],[3,6,9]])
print(df1)
0 1 2
0 1 2 3
1 4 5 6
2 3 6 9
df1=pd.DataFrame([[1,2,3],[4,5,6],[3,6,'a']],index=['a','b','c'],columns=['语文','数学','英语'])
print(df1)
语文 数学 英语
a 1 2 3
b 4 5 6
c 3 6 a
df1.index
Index(['a', 'b', 'c'], dtype='object')
df1.columns
Index(['语文', '数学', '英语'], dtype='object')
df1.values
array([[1, 2, 3],
[4, 5, 6],
[3, 6, 'a']], dtype=object)
df1.head(2)
df1.tail(2)
df1.describe()
| 语文 | 数学 | 英语 |
---|
count | 3.000000 | 3.000000 | 3.0 |
---|
mean | 2.666667 | 4.333333 | 6.0 |
---|
std | 1.527525 | 2.081666 | 3.0 |
---|
min | 1.000000 | 2.000000 | 3.0 |
---|
25% | 2.000000 | 3.500000 | 4.5 |
---|
50% | 3.000000 | 5.000000 | 6.0 |
---|
75% | 3.500000 | 5.500000 | 7.5 |
---|
max | 4.000000 | 6.000000 | 9.0 |
---|
df1.shape
(3, 3)
导入数据
pd.read_excel pd.read_csv pd.read_table
df1 = pd.read_excel(io = 'data/1月.xlsx',sheet_name = 0,index_col=0)
df1.head()
| 买家实际支付金额 | 收货人姓名 | 宝贝标题 |
---|
买家会员名 | | | |
---|
mrhy1 | 41.86 | 周某某 | 零基础学Python |
---|
mrhy2 | 41.86 | 杨某某 | 零基础学Python |
---|
mrhy3 | 48.86 | 刘某某 | 零基础学Python |
---|
mrhy4 | 48.86 | 张某某 | 零基础学Python |
---|
mrhy5 | 48.86 | 赵某某 | C#项目开发实战入门 |
---|
df1 = pd.read_csv('data/1月.csv',encoding='gbk',sep=',',index_col=0)
df1.head()
| 买家实际支付金额 | 收货人姓名 | 宝贝标题 | 订单付款时间 |
---|
买家会员名 | | | | |
---|
mrhy1 | 41.86 | 周某某 | 零基础学Python | 2018/5/16 9:41 |
---|
mrhy2 | 41.86 | 杨某某 | 零基础学Python | 2018/5/9 15:31 |
---|
mrhy3 | 48.86 | 刘某某 | 零基础学Python | 2018/5/25 15:21 |
---|
mrhy4 | 48.86 | 张某某 | 零基础学Python | 2018/5/25 15:21 |
---|
mrhy5 | 48.86 | 赵某某 | C#项目开发实战入门 | 2018/5/25 15:21 |
---|
type(df1)
pandas.core.frame.DataFrame
df1 = pd.read_table('data/1月.txt',encoding='gbk',sep='\t')
df1.head()
| 买家会员名 | 买家实际支付金额 | 收货人姓名 | 宝贝标题 | 订单付款时间 |
---|
0 | mrhy1 | 41.86 | 周某某 | 零基础学Python | 2018/5/16 9:41 |
---|
1 | mrhy2 | 41.86 | 杨某某 | 零基础学Python | 2018/5/9 15:31 |
---|
2 | mrhy3 | 48.86 | 刘某某 | 零基础学Python | 2018/5/25 15:21 |
---|
3 | mrhy4 | 48.86 | 张某某 | 零基础学Python | 2018/5/25 15:21 |
---|
4 | mrhy5 | 48.86 | 赵某某 | C#项目开发实战入门 | 2018/5/25 15:21 |
---|
数据抽取
loc iloc
data = [[110,105,99],[105,88,115],[109,120,130],[112,115]]
name = ['明日','七月流火','高袁圆','二月二']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data, index=name, columns=columns)
print(df)
语文 数学 英语
明日 110 105 99.0
七月流火 105 88 115.0
高袁圆 109 120 130.0
二月二 112 115 NaN
df.loc['七月流火']
语文 105.0
数学 88.0
英语 115.0
Name: 七月流火, dtype: float64
type(df.loc['七月流火'])
pandas.core.series.Series
df.iloc[1]
语文 105.0
数学 88.0
英语 115.0
Name: 七月流火, dtype: float64
df.loc[['七月流火','二月二']]
| 语文 | 数学 | 英语 |
---|
七月流火 | 105 | 88 | 115.0 |
---|
二月二 | 112 | 115 | NaN |
---|
type(df.loc[['七月流火','二月二']])
pandas.core.frame.DataFrame
df.iloc[[1,3]]
| 语文 | 数学 | 英语 |
---|
七月流火 | 105 | 88 | 115.0 |
---|
二月二 | 112 | 115 | NaN |
---|
df.iloc[1:]
| 语文 | 数学 | 英语 |
---|
七月流火 | 105 | 88 | 115.0 |
---|
高袁圆 | 109 | 120 | 130.0 |
---|
二月二 | 112 | 115 | NaN |
---|
df['数学']
明日 105
七月流火 88
高袁圆 120
二月二 115
Name: 数学, dtype: int64
type(df['语文'])
pandas.core.series.Series
df[['语文','英语']]
| 语文 | 英语 |
---|
明日 | 110 | 99.0 |
---|
七月流火 | 105 | 115.0 |
---|
高袁圆 | 109 | 130.0 |
---|
二月二 | 112 | NaN |
---|
df.loc[:,['语文']]
| 语文 |
---|
明日 | 110 |
---|
七月流火 | 105 |
---|
高袁圆 | 109 |
---|
二月二 | 112 |
---|
type(df.loc[:,['语文']])
pandas.core.frame.DataFrame
df.loc[:,['语文','英语']]
| 语文 | 英语 |
---|
明日 | 110 | 99.0 |
---|
七月流火 | 105 | 115.0 |
---|
高袁圆 | 109 | 130.0 |
---|
二月二 | 112 | NaN |
---|
df.iloc[:,[0]]
| 语文 |
---|
明日 | 110 |
---|
七月流火 | 105 |
---|
高袁圆 | 109 |
---|
二月二 | 112 |
---|
df.loc[['七月流火'],['数学']]
df.loc[['七月流火','二月二'],['数学','语文']]
df.iloc[1:,[0,2]]
| 语文 | 英语 |
---|
七月流火 | 105 | 115.0 |
---|
高袁圆 | 109 | 130.0 |
---|
二月二 | 112 | NaN |
---|
df
| 语文 | 数学 | 英语 |
---|
明日 | 110 | 105 | 99.0 |
---|
七月流火 | 105 | 88 | 115.0 |
---|
高袁圆 | 109 | 120 | 130.0 |
---|
二月二 | 112 | 115 | NaN |
---|
df[df.loc[:,'语文']>=110]
| 语文 | 数学 | 英语 |
---|
明日 | 110 | 105 | 99.0 |
---|
二月二 | 112 | 115 | NaN |
---|
print(df)
语文 数学 英语
明日 110 105 99.0
七月流火 105 88 115.0
高袁圆 109 120 130.0
二月二 112 115 NaN
数据的增加、修改和删除
data = [[110,105,99],[105,88,115],[109,120,130],[112,115]]
name = ['明日','七月流火','高袁圆','二月二']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data, index=name, columns=columns)
print(df)
语文 数学 英语
明日 110 105 99.0
七月流火 105 88 115.0
高袁圆 109 120 130.0
二月二 112 115 NaN
增加数据
df['物理']=[88,90,50,60]
print(df)
语文 数学 英语 物理
明日 110 105 99.0 88
七月流火 105 88 115.0 90
高袁圆 109 120 130.0 50
二月二 112 115 NaN 60
df.loc['胡静']=[120,99,43,24]
print(df)
语文 数学 英语 物理
明日 110 105 99.0 88
七月流火 105 88 115.0 90
高袁圆 109 120 130.0 50
二月二 112 115 NaN 60
胡静 120 99 43.0 24
df1=df.append(df)
print(df1)
语文 数学 英语 物理
明日 110 105 99.0 88
七月流火 105 88 115.0 90
高袁圆 109 120 130.0 50
二月二 112 115 NaN 60
胡静 120 99 43.0 24
明日 110 105 99.0 88
七月流火 105 88 115.0 90
高袁圆 109 120 130.0 50
二月二 112 115 NaN 60
胡静 120 99 43.0 24
修改数据
data = [[110,105,99],[105,88,115],[109,120,130],[112,115]]
name = ['明日','七月流火','高袁圆','二月二']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data, index=name, columns=columns)
print(df)
语文 数学 英语
明日 110 105 99.0
七月流火 105 88 115.0
高袁圆 109 120 130.0
二月二 112 115 NaN
df.columns
Index(['语文', '数学', '英语'], dtype='object')
df.columns=['语文', '数学(上 )', '大学英语']
print(df)
语文 数学(上 ) 大学英语
明日 110 105 99.0
七月流火 105 88 115.0
高袁圆 109 120 130.0
二月二 112 115 NaN
df.rename(columns={'语文':'大学语文','英语':'高级英语'},inplace=True)
print(df)
大学语文 数学 高级英语
明日 110 105 99.0
七月流火 105 88 115.0
高袁圆 109 120 130.0
二月二 112 115 NaN
df.index
Index(['明日', '七月流火', '高袁圆', '二月二'], dtype='object')
df.index=['明日dd', '七月流火dd', '高袁圆ee', '二月二ss']
print(df)
大学语文 数学 高级英语
明日dd 110 105 99.0
七月流火dd 105 88 115.0
高袁圆ee 109 120 130.0
二月二ss 112 115 NaN
df.rename(index={'明日':'后日','二月二':'三月三'},inplace=True)
print(df)
语文 数学 英语
后日 110 105 99.0
七月流火 105 88 115.0
高袁圆 109 120 130.0
三月三 112 115 NaN
df.loc['七月流火']
语文 105.0
数学 88.0
英语 115.0
Name: 七月流火, dtype: float64
df.loc['七月流火']=[110,90,100]
print(df)
语文 数学 英语
后日 110 105 99.0
七月流火 110 90 100.0
高袁圆 109 120 130.0
三月三 112 115 NaN
df['语文']=[100,90,20,3]
print(df)
语文 数学 英语
后日 100 105 99.0
七月流火 90 90 100.0
高袁圆 20 120 130.0
三月三 3 115 NaN
df.iloc[[0,3],[0,2]]=[[150,150],[0,0]]
print(df)
语文 数学 英语
后日 150 150 150.0
七月流火 90 90 100.0
高袁圆 20 120 130.0
三月三 0 0 0.0
删除数据
data = [[110,105,99],[105,88,115],[109,120,130],[112,115]]
name = ['明日','七月流火','高袁圆','二月二']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data, index=name, columns=columns)
print(df)
语文 数学 英语
明日 110 105 99.0
七月流火 105 88 115.0
高袁圆 109 120 130.0
二月二 112 115 NaN
df.drop(['数学'],axis=1,inplace=True)
print(df)
语文 英语
明日 110 99.0
七月流火 105 115.0
高袁圆 109 130.0
二月二 112 NaN
df.drop(['七月流火'],axis=0,inplace=True)
print(df)
语文 数学 英语
明日 110 105 99.0
高袁圆 109 120 130.0
二月二 112 115 NaN