Pandas 学习笔记

Pandas 学习笔记

Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据)

                                   

一、Pandas 数据结构Series

      Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。

Series 由索引(index)和列组成,函数如下:

pandas.Series( data, index, dtype, name, copy)

参数说明:

  • data:一组数据(ndarray 类型)
  • index:数据索引标签,如果不指定,默认从 0 开始。
  • dtype:数据类型,默认会自己判断。
  • name:设置名称。
  • copy:拷贝数据,默认为 False

实例:

1.用列表实例

import pandas as pd

a=[1,2,3]

myvar=pd.Series(a)

print(myvar) #如果没有指定索引,索引值就从0开始

print(myvar[1]) #也可以指定索引值,根据索引值读取数据  输出为:2

a=["Google","Runoob","Wiki"]
myvar=pd.Series(a,index=["x","y","z"])
print(myvar)

print(myvar["y"])  #输出为:Runoob

2. 使用 key/value 对象,字典来创建 Series

sites={1:"Google",2:"Runoob",3:"Wiki"}
myvar=pd.Series(sites)

print(myvar)

   

字典的 key 变成了索引值,如果只需要字典中的一部分数据,只需要指定需要数据的索引即可

sites={1:"Google",2:"Runoob",3:"Wiki"}
myvar=pd.Series(sites,index=[1,2])

#设置 Series 名称参数:

sites={1:"Google",2:"Runoob",3:"Wiki"}
myvar=pd.Series(sites,index=[1,2],name="RUNOOB-Series-TEST")

二.、Pandas 数据结构DataFrame

       DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做 Series 组成的字典(共同用一个索引)Pandas DataFrame 是一个二维的数组结构,类似二维数组

图示说明:

DataFrame 构造方法如下:

pandas.DataFrame( data, index, columns, dtype, copy)

参数说明:

  • data:一组数据(ndarrayseries, map, lists, dict 等类型)
  • index:索引值,或者可以称为行标签。
  • columns:列标签,默认为 RangeIndex (0, 1, 2, …, n)
  • dtype:数据类型。
  • copy:拷贝数据,默认为 False

实例:

1.用列表创建

data=[['Google',10],['Runoob',12],['Wiki',13]]
df=pd.DataFrame(data,columns=['Site','Age'],dtype=float)
print(df)

2.用ndarrays创建

ndarray 的长度必须相同, 如果传递了index,则索引的长度应等于数组的长度。如果没有传递索引,则默认情况下,索引将是range(n),其中n是数组长度。

data={'Site':['Google','Runoob','Wiki'],'Age':[10,12,13]}
df=pd.DataFrame(data)
print(df)

3.用字典(key/value),其中字典的 key 为列名创建, 没有对应的部分数据为 NaN

data=[{'a':1,'b':2},{'a':5,'b':10,'c':20}]
df=pd.DataFrame(data)
print(df)

# 可以使用loc属性返回指定行的数据,如果没有设置索引,第一行索引为0,第二行索引为1,以此类推:

data={
"calories":[420,380,390],
"duration":[50,40,45]
}

# 数据载入到 DataFrame 对象
df=pd.DataFrame(data)
# 返回第一行
print(df.loc[0])
# 返回第二行
print(df.loc[1])

注意:返回结果其实就是一个 Pandas Series 数据。

# 也可以返回多行数据,使用[[ ... ]]格式,...为各行的索引,以逗号隔开:

print(df.loc[[0,1]])

# 可以指定索引值

data={
"calories":[420,380,390],
"duration":[50,40,45]
}
df=pd.DataFrame(data,index=["day1","day2","day3"])
# 指定索引
print(df.loc["day2"])

# 获取 dataframe 中其中几列

data = {

  "mango": [420, 380, 390],

  "apple": [50, 40, 45],

  "pear": [1, 2, 3],

  "banana": [23, 45,56]

}

df = pd.DataFrame(data)

print(df[["apple","banana"]])

#利用append()命令,以Series格式向DataFrame中添加一行

data = {

  "mango": [420, 380, 390],

  "apple": [50, 40, 45],

  "pear": [1, 2, 3],

  "banana": [23, 45,56]

}

df = pd.DataFrame(data)

df = df.append(

        pd.Series(

          [0,1,2,3], # 对应DataFrame中的data

          index=["mango","apple","pear","banana"],# 对应DataFrame中的columns

          name=5, # 对应DataFrame中的index

          )

   )

其他函数:

idxmax()函数:获取pandasseries最大值对应的索引

data = {

 "mango": [420, 380, 390],

 "apple": [50, 40, 45],

 "pear": [1, 2, 3],

 "banana": [23, 45,56]

}

df = pd.DataFrame(data)

df = df.append(

    pd.Series([0,1,2,3], # 对应DataFrame中的data

    index=["mango","apple","pear","banana"], #对应DataFrame中的columns

    name=5, #对应DataFrame中的index

      )

)

print("\n--------------------df----------------------\n")

print(df)

# 指定索引

print('\n--------------df.loc[0,:]----------------\n')

m =df.loc[0,:]

print(m)

m = m.reindex(np.random.permutation(m.index))#打乱顺序,避免每次选择的动作都为序号偏前的动作

c = m.idxmax()

print("\n--------------------idxmax()----------------------\n")

print(c)

三、Pandas CSV 文件

      CSVComma-Separated Values,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。

1)读CSV文件

import pandas as pd

df = pd.read_csv('nba.csv')

print(df.to_string())

to_string()用于返回 DataFrame 类型的数据,如果不使用该函数,则输出结果为数据的前面 5 行和末尾 5 行,中间部分以...代替。

(2)写CSV文件

我们也可以使用to_csv()方法将 DataFrame 存储为 csv 文件:

import pandas as pd

# 三个字段 name, site, age

nme = ["Google", "Runoob", "Taobao", "Wiki"]

st = ["www.google.com", "www.runoob.com", "www.taobao.com", "www.wikipedia.org"]

ag = [90, 40, 80, 98]

# 字典

dict = {'name': nme, 'site': st, 'age': ag}

df = pd.DataFrame(dict)

# 保存 dataframe

df.to_csv('site.csv')

3)数据处理

head(n)方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5 行。

import pandas as pd

df = pd.read_csv('nba.csv')

print(df.head())

tail(n)方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回NaN

import pandas as pd

df = pd.read_csv('nba.csv')

print(df.tail())

info() 方法返回表格的一些基本信息:

import pandas as pd

df = pd.read_csv('nba.csv')

print(df.info())

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值