目录
5.7 t.loc[["a","b"],["X","Y"]]
6.1 t[(10 < t["W"]) & (t["W"] < 20)]
6.2 t[(6 == t["W"]) | (t["W"] == 9)]
6.6 pd.isnull(t1) & pd.notnull(t1)
6.11 t1["X"].fillna(t1["X"].mean())
7.10 df.groupby('column').mean()
7.11 df.groupby('column').agg({'col1': 'mean', 'col2': 'sum'})
7.12 df.pivot_table(values='col1', index='col2', columns='col3', aggfunc='mean')
9.4 t1.merge(t2, how="outer", on="B")
11.4 t1.set_index("A", drop=False)
11.10 c["one"] & c["one"]["bar"]
11.12 b.swaplevel().loc["bar"]
# 开篇
pandas可以读取SQL;pd.read_sql(sql_sentence,connection;
类型转换: map(int, a):
- map是一个 Python 内置函数;
map()
的使用示例,用于将一个可迭代对象a
中的每个元素都应用int()
函数进行转换;- 在 Python 中,
a
可以是任何可迭代对象,包括但不限于:
- 列表(List): 最常见的可迭代对象之一,包含多个元素的有序集合。
- 元组(Tuple): 与列表类似,但元组是不可变的序列。
- 集合(Set): 无序且不重复的元素集合。
- 字符串(String): 字符的有序集合。
- 字典(Dictionary): 包含键值对的集合,map() 可以应用于字典的键或值。
1. pandas的series的了解
-
pandas的使用:
numpy帮我们处理的是数值型的数据,无法处理除数值型之外的类型,而pandas除了处理数值之外(基于numpy),还能帮我们处理其它类型的数据;
-
pandas的常用数据类型:
Series一维,带标签数组;
DataFrame二维,Series容器;
1.1 pd.Series 创建
import pandas as pd
import numpy as np
import string
# t = pd.Series(np.arange(10))
t = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10])) # 创建Series
print(t)
print("*" * 100)
print(type(t))
1.2 pd.series 的索引使用
索引默认0开始;
t = pd.Series([1, 2, 3, 1, 2, 3])
print(type(t))
print(t)
索引默认0开始,但是可以手动指定索引;
t = pd.Series([1, 2, 3, 1, 2, 3], index=list("abcdef"))
print(type(t))
print("*" * 100)
print(t)
1.3 pd.series 之字典/索引
通过字典创建一个Series,其中的索引就是字典的键;
重新给其指定其它索引之后,如果能够对应上,就取其值,如果不能,就为Nan;
temp_dict = {"name": "yiyi", "age": 30, "tel": 1186}
t3 = pd.Series(temp_dict)
print(t3)
1.4 pandas 转换数据类型
temp_dict = {"name": "yiyi", "age": 30, "tel": 1186}
t3 = pd.Series(temp_dict) # 创建Series
print(t3)
print("*" * 100)
t = pd.Series([1, 2, 3, 1, 2, 3], index=list("abcdef"))
print(t.dtype)
print("*" * 100)
t4 = t.astype(float) # 转换数据类型
print(t4)
print("*" * 100)
print(t4.dtype)
1.5 pandas 通过索引或者通过位置来取值
temp_dict = {"name": "yiyi", "age": 30, "tel": 1186}
t3 = pd.Series(temp_dict) # 创建Series
print(t3["name"]) # 根据索引key获取数据
print(t3[0]) # 根据索引下标获取数据
1.6 pandas 指定行取值
temp_dict = {"name": "yiyi", "age": 30, "tel": 1186}
t3 = pd.Series(temp_dict) # 创建Series
print(t3[:2]) # 获取前2个数据
t3[:2]
:代表2前面的所有行被取出;
t3[["key1","key2"]]
:根据key取值;
t3[[1, 2]]
:根据位置取值;
如果不存在该key,那么取出来的就会是NaN的值;
temp_dict = {"name": "yiyi", "age": 30, "tel": 1186}
t3 = pd.Series(temp_dict) # 创建Series
print(t3[:2]) # 获取前2个数据
print("*" * 100)
print(t3[[1, 2]]) # 获取指定索引的数据
print("*" * 100)
print(t3[["age", "tel"]]) # 获取指定索引的数据
1.7 pands之Series 切片和索引
切片:直接传入start end或者步长即可;
索引:一个的时候直接传入序号或者index,多个的时候传入序号或者index的列表;
1. t[2:10:2] :从2开始到10结束,步长为2
t = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10])) # 创建Series
print(t)
print("*" * 100)
print(t[2:10:2]) # 从2开始到10结束,步长为2
2. t[[2, 3, 6]] :只获取2,3,6的数据
t = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10])) # 创建Series
print(t)
print("*" * 100)
print(t[[2, 3, 6]]) # 获取指定索引的数据
3. t["F"] :根据key获取数据
t = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10])) # 创建Series
print(t)
print("*" * 100)
print(t["F"]) # 获取指定索引的数据
1.8 pands之Series 的索引和值
-
Series对象本质上有两个数组构成,一个数组构成对象的键(index,索引),一个数组构成对象的值(value)
键→值
ndarray
的很多方法都可以运用于series
类型,比如argmax,clip
;series
具有where
方法,但是结果和ndarray
不同;
t = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10])) # 创建Series
print(t.index) # 获取Series的索引
print(type(t.index)) # 获取Series的索引下标类型
print("*" * 100)
print(t.values) # 获取Series的值
print(type(t.values)) # 获取Series的值类型
各种方法:
list(t.index)[:2]
:先获取所有的index,取2前面的所有行
t = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10])) # 创建Series
print(type(t.index)) # 获取Series的索引下标类型
print(len(t.index)) # 获取Series的索引下标长度
print(list(t.index)) # 获取Series的索引下标
print(list(t.index)[:2]) # 指定获取Series的索引下标
2. pandas读取外部数据/sql/mongodb
2.1 read_csv 读取csv文件
pd.read_csv("../youyube_video_data/GBvideos-pandas.csv") :读取csv文件
- 除了cvs文件外,还可以读取SQL,MongoDB的文件内容:
from pymongo import MongoClient
导包;pd.Series(t)
读取;
- 不同列索引的情况下,也不会影响这些数据转成DataFrame:
df = pd.DataFrame(data)
转换
df = pd.read_csv("../youyube_video_data/GBvideos-pandas.csv") # 读取csv文件
print(df)
3. pandas的dataFrame的创建
3.1 pd.DataFrame 的创建
- DataFrame对象既有行索引,又有列索引:
- 行索引,表明不同行,横向索引,叫index,0轴,axis=0;
- 列索引,表明不同列,纵向索引,叫columns,1轴,axis=1;
t = pd.DataFrame(np.arange(12).reshape((3, 4)))
print(t)
3.2 DataFrame指定行索引,指定列索引
t = pd.DataFrame(np.arange(12).reshape((3, 4)), index=list("abc"), columns=list("WXYZ"))
print(t)
3.3 DataFrame切片操作
d1 = {"name": ["yiYi", "zhangSan"], "age": [24, 28], "tel": [1186, 1185]}
print(pd.DataFrame(d1)) # 创建DataFrame
3.4 字典转成DataFrame
d1 = [{"name": "yiYi", "age": 24, "tel": 1186}, {"name": "zhangSan", "age": 28}, {"name": "wangWu", "age": 30}]
print(d1)
print("*" * 100)
print(pd.DataFrame(d1)) # 将列表转换为DataFrame
4. Dataframe的描述信息
-
DataFrame的基础属性:
df.shape # 行数 列数
df.dtypes # 列数据类型
df.ndim # 数据维度
df.index # 行索引
df.columns # 列索引
df.values # 对象值,二维ndarray数组
-
DataFrame整体情况查询:
df.head(3) # 显示头部几行,默认5
df.tail(3) # 显示末尾几行,默认5行
df.info() # 相关信息概览:行数,列数,列索引,列非空值个数,列类型,内存占用
df.describe() # 快速综合统计结果:计数,均值,标准差,最大值,四分位数,最小值
4.1 sort_values 排序
df.sort_values(by="W", ascending=False) :排序,by