Python Pandas 的使用——DataFrame

Python Pandas 的使用——DataFrame

Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。

1. Pandas 安装

官方推荐的安装方式是通过Anaconda安装,但Anaconda太过庞大,若只是需要Pandas的功能,则可通过PyPi方式安装。

pip install Pandas

2. Pandas 的数据结构——DataFrame

使用pandas前需要先引入pandas,若无特别说明,pd作为Pandas别名的通用写法
import pandas as pd   
2.1 DataFrame的创建
  • DataFrame 的定义
    • DataFrame是一张二维表,可以看成是电子表格,Sql表,或者说是以一维数据Series为元素的Series
    • 也可以看做是二维的numpy.ndarray
  • 通过dict 生成DataFrame
d = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
     'two': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
df1 = pd.DataFrame(d,index=['d', 'b', 'a']) # 设置index参数,对DataFrame的行重新排序
df2 = pd.DataFrame(d, index=['d', 'b', 'a'], columns=['two', 'three']) # 设置columns参数添加新的列或者修改一列数据
out:
    df
   one  two
a  1.0  1.0
b  2.0  2.0
c  3.0  3.0
d  NaN  4.0
  • 通过ndarray创建
df = pd.DataFrame(np.random.randn(2,3))
out:
    df
          0         1         2
0  0.545203  0.645277 -1.464948
1 -0.529290 -0.537678  1.181774
  • 通过 dictlist 创建
data2 = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]
df3 = pd.DataFrame(data2)
df3 = pd.DataFrame(data2, index=['first', 'second'])
df4 = pd.DataFrame.from_dict(dict([('A', [1, 2, 3]), ('B', [4, 5, 6])]))
# 通过设置orient='index',可使行列倒置
df5 = pd.DataFrame.from_dict(dict([('A', [1, 2, 3]), ('B', [4, 5, 6])]),orient='index', columns=['one', 'two', 'three'])
out:
    df3
   a   b     c
0  1   2   NaN
1  5  10  20.0
	df4
   A  B
0  1  4
1  2  5
2  3  6
	df5
   one  two  three
A    1    2      3
B    4    5      6
  • 通过 tuplesdict 来创建
df6 = pd.DataFrame({('a', 'b'): {('A', 'B'): 1, ('A', 'C'): 2},('a', 'a'): {('A', 'C'): 3, ('A', 'B'): 4},('a', 'c'): {('A', 'B'): 5, ('A', 'C'): 6},('b', 'a'): {('A', 'C'): 7, ('A', 'B'): 8},('b', 'b'): {('A', 'D'): 9, ('A', 'B'): 10}})
out:
    df6
       a              b      
       b    a    c    a     b
A B  1.0  4.0  5.0  8.0  10.0
  C  2.0  3.0  6.0  7.0   NaN
  D  NaN  NaN  NaN  NaN   9.0
2.2 DataFrame 的插入
out:
    df2
   two three
d  NaN   NaN
b  2.0   NaN
a  1.0   NaN
  • 插入列
data = [1., 2., 3.]
df2.insert(0,'four',data)   # 参数:(插入的位置,插入列的列名,列数据)
df2
   four  two three
d   1.0  NaN   NaN
b   2.0  2.0   NaN
a   3.0  1.0   NaN
  • 插入行

    通过append()函数插入

row = {'two':4,'four':5,'three':8}	
df2.append(row,ignore_index=True)
out:
    df2
   four  two three
d   1.0  4.0   NaN
b   2.0  2.0   NaN
a   3.0  1.0   NaN

​ 通过loc指定位置插入

df2.loc[2]=[9,10,11]
df2
   four   two three
d   1.0   4.0   NaN
b   2.0   2.0   NaN
a   3.0   1.0   NaN
2   9.0  10.0    11
2.3 DataFrame获取数据

​ 获取列数据

df2['two']
df['three'] = df['one'] * df['two'] # 将列'one'的值*列'two'的值赋给'three'
df['flag'] = df['one'] > 2 #新增列

​ 通过loc函数获取

df2.loc[:,'two']  # 取出标签为'two'的列数据

​ 通过iloc函数获取

df2.iloc[:,1]   # 取出第2列数据
  • 获取行数据

    通过切片方式获取

df2[1:3]
out:
    df2[1:3]
   four  two three
b   2.0  2.0   NaN
a   3.0  1.0   NaN

​ 按照条件获取

df2[df2.four > 2]
out:
    df2[df2.four > 2]
   four   two three
a   3.0   1.0   NaN
2   9.0  10.0    11

​ 通过loc函数

df2.loc['a'] # df2.loc['a', 'b']可取多行
out:
    df2.loc['a']
four       3
two        1
three    NaN
Name: a, dtype: object

​ 通过iloc函数

df2.iloc[1] # df2.iloc[1,1] 指取出第2行第2列的数据
out:
    df2.iloc[1]
four       2
two        2
three    NaN
Name: b, dtype: object

loc函数与iloc函数的区别:

  • loc是通过标签来获取数据,loc[‘a’]取出标签为’a’的行,loc[:,‘two],取出标签为‘two’的列数据,loc[‘a’,‘two’]取出行标签为’a’,列标签为’two’的数据
  • iloc是通过位置来获取数据,iloc[1]取出第二行,iloc[:,1]取出第2列数据,iloc[1,1] 指取出第2行第2列的数据
2.4 DataFrame 删除数据
  • drop函数
df2.drop('a')  # 删除行标签为'a'的行,实际上是df2.drop('a', axis=0)
df2.drop('three', axis=1)   # 删除列标签为'three'的列
df2.drop(df2.index[2])   # 根据DataFrame的默认整型索引指定位置进行删除,
# 原理是df2.index得到df2的行标签数组,再通过定位得到具体的行标签,本质上和第一行代码功能一样

drop函数的axis属性有俩个值,0与1,当设置为0时,表示删除行,当设置为1时,表示删除列,默认为0

  • pop函数
df2.pop('four')
df2
    two three
d   4.0   NaN
b   2.0   NaN
a   1.0   NaN
2  10.0    11

drop与pop函数的区别在于,

  • drop函数不对源DataFrame进行修改,而是返回一个新的对象,pop函数是直接在源DataFrame进行修改
  • drop不指定axis参数时默认对行进行删除,pop默认对列进行删除
  • 条件删除
# 条件删除的本意并不对原DataFrame进行修改,而是通过条件筛选出需要保留的数据并返回一个新的对象
# eg:删除列标签为'two'且数据大于9的行
df2[df2['two'] <= 9]
df2[df2['two'] <= 9]
   four  two three
d   1.0  4.0   NaN
b   2.0  2.0   NaN
a   3.0  1.0   NaN
2.5 DataFrame属性
属性说明
index以数组方式返回行标签
columns以数组方式返回列标签
axes以二维数组方式返回行标签与列标签
T返回行列转置后的DataFrame,类似于矩阵
2.6 DataFrame函数(获取属性层面的函数)
函数说明
info()打印二维数组的信息,包含行列标签,内存大小,
head(i)显示前i行数据,以行为单位
tail(i)显示后i行数据,以行为单位
describe()查看数据值列的汇总统计
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值