文章目录
1. pandas 的数据类型
1.1 Series
Series 是“带标签的数组”。
- 创建
# 1.直接创建
s = pd.Series(np.arange(10), index=list("ABCDEFGHIJ"))
# 2.通过字典创建
s = pd.Series(dict_)
- 切片和索引
# 切片
s[2:10:2]
# 索引
s[1] # 选取单个元素
s[[2,3,6]] # 选取某几个元素
s[s > 4] # bool索引
s[["A", "F"]] #
1.2 DataFrame
二维,Series的容器。
- 基础属性
df.shape
df.dtypes
df.ndim
维度df.index
df.columns
df.values
- 整体情况
df.head()
df.tail()
末尾几行df.info()
查看数据字段、缺失情况df.describe()
查看数据的统计信息
- 取行或列,可用于更改数据
df.loc()
通过标签df.iloc()
通过索引df[['a']]
返回的是DataFramedf['a']
返回的是Series
2. 读取外部数据
常用pd.read_csv()
3. 数据合并
join()
merge()
4. 常用统计方法
df.mean()
df.max()
df.min()
df.argmax()
df.argmin()
5. 缺失数据的处理
- 判断是否NaN:
pd.isnull(df)
,pd.notnull(df)
- 抛弃:
df.dropna()
- 填充:
df.fillna()
- 处理为0的数据:有时需要设置成NaN,令其不参与运算
df[df==0] = np.nan
6. 分组和聚合
- groupby:
grouped = df.groupby(by="columns_name")
,返回的可迭代对象可以进行遍历、应用聚合方法。DataFrameGroupBy
对象中的每一个元素是一个元组
元组里面是*(索引(分组的值),分组之后的DataFrame)*DataFrameGroupBy
对象的优化方法count
sum
mean
median
std,var
min,max
# 对国家和省份进行分组统计
grouped = df.groupby(by=[df["Country"],df["State/Province"]])
#获取分组之后的某一部分数据
df.groupby(by=["Country","State/Province"])["Country"].count()
#对某几列数据进行分组
df["Country"].groupby(by=[df["Country"],df["State/Province"]]
).count()
t1 = df[["Country"]].groupby(by=[df["Country"],df["State/Province"]]).count()
t2 = df.groupby(by=["Country","State/Province"])[["Country"]].count()
#以上的两条命令结果一样
#和之前的结果的区别在于当前返回的是一个DataFrame类型
7. 索引和复合索引
index是个可迭代对象。
-
索引操作:
- 获取index:
df.index
- 设置index :
df.index = ['x','y']
- 重新设置reindex :
df.reindex(list("abcedf"))
,原有的索引不变,没有的默认数据为NaN
- 指定某一列作为index :
df.set_index("Country",drop=False)
,drop默认为True,意味删掉DataFrame中的索引列。 - 返回index的唯一值:
df.set_index("Country").index.unique()
a.set_index(["c","d"])
- 设置复合索引
- 获取index: