【小白学机器学习33】 大数定律python的 pandas.Dataframe 和 pandas.Series基础内容
特殊之处:默认带一个序号列可以认为是带 序号的 数组/列表data:输入的数据,可以是列表、常量、ndarray 数组等。index:索引值必须是唯一的,与data的长度相同,默认为np.arange(n)dtype:数据类型copy:是否复制数据,默认为false。
·
目录
0.1pd.Dataframe有一个比较麻烦琐碎的地方,就是引号 和括号
list → np.array(list) → pd.Series(np.array)/pd.Dataframe
2 pd.concat() 可以合并 pd.Dataframe
5.1 sample_dataframe2.head(n=2) 取前面的n行,不能任意
5.2 sample_dataframe2.query("查询条件")取前面的n行,不能任意
6 可以用pd.Dataframe().query() 方法 同时进行行和列筛选!
7.2 将pd.Dataframe取出1列会变成pd.Series
7.3 序列 pd.series 和数组array() 的转化
0 总结
0.1pd.Dataframe有一个比较麻烦琐碎的地方,就是引号 和括号
- ""用的比较多,记住这个原则:
- pd.Dataframe所有的方法里,基本都是加一个""括起来基本就够了,很少有多处多重引号的。
0.2 pd.Dataframe关于括号的原则
- 关于括号,记住一个原则
- 1层括号,一般表示一维数组,比如pd.Dataframe[]取出来的一般都是1列/1行等
- 2层括号,一般表示2维数组,比如pd.Dataframe[[]] 取出来的一般都是一个子二维表
- 有些地方需要多层的中括号,[] , 比如 [ [ ] ]
0.3 分清楚几个数据类型和对应的方法的范围
- python原生的
- 原生类型,列表list,list=[1,2,3],
- 原生方法 range(1,10,1)
- numpy和 pandas都是python的大包
- numpy里
- 对应的数据类型,数组array,arr1=np.array([1,2,3])
- 专有方法np.arange(1,10,1),np.arange(start=1,stop=10,step=1),
0.4 几个数据结构的构造关系
list → np.array(list) → pd.Series(np.array)/pd.Dataframe
- python原生的
- 列表list,list1=[1,2,3],
- numpy里
- 直接用列表生成np的数组array, arr1=np.array(list1)
- pandas里
- 用 np.array 为内容,直接生成pd.Series=pd.Series(np.array())
- 用 np.array 为列,生成pd.Dataframe({key1: np.array(),key2: np.array()})
- 取出pd.Dataframe的某列,生成pd.Series
- pd.Series.values()= np.array
1 python 里的 pandas.Dataframe
- 本质是一个二维表
- 特殊点,在于多了一个默认的序号列
- 语法
- pd.Dataframe({key1:value1,key2:value2})
2 pd.concat() 可以合并 pd.Dataframe
2.1 pd.concat() 合并规则
- pd.concat() 语法
- pd.concat([pd.Dataframe1,pd.Dataframe1],axis=0/1)
- pd.concat() 可以指定合并的方向,默认是axis=0,也就是按行的方向合并
- pd.concat() 可以指定合并的方向,如果是axis=1,就是按列的方向进行合并
import numpy as np
import pandas as pd
import scipy as sp
# 可以用list 生成np.array()
sample_array1=np.array([1,2,3])
sample_array2=np.array([10,20,30])
sample_array3=np.array([100,200,300])
# 进一步,可以用np.array()生成pd.Series
# 注意pd.Series 首字母一定大写
sample_series1=pd.Series(sample_array1)
print(sample_series1)
print()
# 进一步,也可以用np.array()生成pd.DataFrame
# 注意pd.DataFrame 首字母一定大写
sample_dataframe1=pd.DataFrame({"col1":sample_array1,
"col2":sample_array2,
"col3":sample_array3,
})
print(sample_dataframe1)
print()
sample_dataframe2=pd.DataFrame({"col1":sample_array1,
"col2":sample_array2+1,
"col3":sample_array3+1,
})
print(sample_dataframe2)
print()
print(pd.concat([sample_dataframe1,sample_dataframe2])) # pd.concat()默认合并是axis=0, 按行合并
print()
print(pd.concat([sample_dataframe1,sample_dataframe2],axis=1))
print()
3 pd.Dataframe.drop() 删除行列的操作
- pd.Dataframe.drop()
- pd.Dataframe.drop("行名/列名",axis=0/1)
- axis=0 是行
- 注意:列名一般是字符串,如 "col1"
- 注意:行名一般是数字,如 1
4 pd.Dataframe 列操作
- pd.Dataframe 数据帧
- 操作列的办法有两种
- 直接引用 pd.Dataframe 对象的属性,pd.Dataframe.列名(不加字符串引号)
- 类切片的列操作方法
- pd.Dataframe["列名1"]
- pd.Dataframe[["列名1","列名2","列名3"]] #注意是双层中括号
5 pd.Dataframe 行操作
- 行操作有两种方法
- sample_dataframe2.head() 方法
- sample_dataframe2.query()方法
5.1 sample_dataframe2.head(n=2) 取前面的n行,不能任意
- n 只能是前面的连续列
print(sample_dataframe2)
print()
print(sample_dataframe2.head(n=2))
5.2 sample_dataframe2.query("查询条件")取前面的n行,不能任意
- sample_dataframe2.query("查询条件")
- sample_dataframe2.query("可以是任意的一个行条件,不要求非是index的值!")
- sample_dataframe2.query("条件1 | 条件2") # or 关系
- sample_dataframe2.query("条件1& 条件2") # and关系
6 可以用pd.Dataframe().query() 方法 同时进行行和列筛选!
print(sample_dataframe2.query("col3==301")[["col2","col3"]])
7 序列 pandas.Series()
7.1 什么是序列
- 特殊之处:默认带一个序号列
- 可以认为是带 序号的 数组/列表
- pandas.Series( data, index, dtype, copy)
data:输入的数据,可以是列表、常量、ndarray 数组等。
index:索引值必须是唯一的,与data的长度相同,默认为np.arange(n)
dtype:数据类型
copy:是否复制数据,默认为false
7.2 将pd.Dataframe取出1列会变成pd.Series
- 将pd.Dataframe取出1列会变成pd.Series
- 也就是说 pd.Series 是 pd.Dataframe 的其中1列!
- 注意方法不同有差别
- 如果是单取出1列,生成pd.Series
- 如果是单取出多列,生成的只是更小的pd.Dataframe,并不是pd.Series,很好理解,不要搞错。
print(sample_dataframe2)
print()
print(sample_dataframe2.col2)
print()
print(sample_dataframe2["col2"])
print()
print(sample_dataframe2[["col2"]])
print()
print(type(sample_dataframe2))
print()
print(type(sample_dataframe2.col2))
print()
print(type(sample_dataframe2["col2"]))
print()
print(type(sample_dataframe2[["col2"]]))
7.3 序列 pd.series 和数组array() 的转化
- pd.series.values 即可以生成对应的 np.array() 数组!
print(sample_dataframe2)
print()
print(sample_dataframe2.col2)
print()
print(sample_dataframe2.col2.values)
print()
print(type(sample_dataframe2))
print()
print(type(sample_dataframe2.col2))
print()
print(type(sample_dataframe2.col2.values))
print()
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献64条内容
所有评论(0)