Pandas基础(二)
一、本课目标
- 掌握DataFrame的特点和使用
- 掌握Pandas分析CSV文件
- 掌握Pandas分析JSON文件
- 掌握Pandas数据清洗
- 掌握Pandas常用函数
二、数据结构 - DataFrame
-
DataFrame 是 Pandas 中的另一个核心数据结构,用于表示二维表格型数据
-
DataFrame 既有行索引也有列索引,它可以被看做由 Series组成的字典(共同用一个索引)
-
DataFrame 提供了各种功能来进行数据访问、筛选、分割、合并、重塑、聚合以及转换等操作
-
创建 DataFrame
-
使用列表创建
- data = [[‘Google’, 10], [‘Baidu’, 12], [‘Wiki’, 13]]
- df = pd.DataFrame(data, columns=[‘Site’, ‘Age’])
-
使用字典创建
- data = {‘Site’:[‘Google’, ‘Baidu’, ‘Wiki’], ‘Age’:[10, 12, 13]}
- df = pd.DataFrame(data)
- data = [{‘Site’:‘Google’,‘Age’: 10},{‘Site’:‘Baidu’,‘Age’:10},{‘Site’:‘Wiki’}]
- df = pd.DataFrame(data)
- df = pd.DataFrame({“Nevada”:{2001:2.4,2002:2.9},“Ohio”:{2000:1.5,2001:1.7,2002:3.6}})
-
使用 ndarrays 创建
-
ndarray_data = np.array([[‘Google’, 10], [‘Baidu’, 12], [‘Wiki’, 13]])
-
df = pd.DataFrame(ndarray_data, columns=[‘Site’, ‘Age’])
import pandas as pd
import numpy as np
# 二维列表中的每个列表表示一行
dt = [['google', 20], ['baidu', 30], ['facebook', 40]]
df = pd.DataFrame(dt, columns = ['size', 'age'])
print(df)
print("*" * 30)
# 字典套列表,其中键作为列名,值做为列数据
di = {
'size':['google', 'baidu', 'facebook'], 'age':[20, 30, 40]}
df = pd.DataFrame(di, columns = ['size', 'age'])
print(df)
print("*" * 30)
# 列表套字典,其中每个字典元表示一行数据
dl = [{
'size':'google', 'age':20}, {
'size':'baidu', 'age':30}, {
'size':'facebook', 'age':40}]
df = pd.DataFrame(dl, columns = ['size', 'age'])
print(df)
# 字典套字典,其中外部字典的键作为列名,内部字典的键作为索引
di1 = {
'a': 1, 'b': 2, 'c': 3}
di2 = {
'a': 4, 'b': 5, 'd': 6}
di3 = {
'k1': di1, 'k2': di2}
df = pd.DataFrame(di3)
print(df)
三、loc 属性
- 返回指定行的数据,索引从 0 开始
- 注意:返回结果其实就是一个 DataFrame 数据
- 例如
- data = {“calories”: [420, 380, 390],“duration”: [50, 40, 45]}
- #数据载入到 DataFrame 对象
- df = pd.DataFrame(data)
- #返回第一行,第二行
- print(df.loc[0])
- print(df.loc[1])
- #返回第一行和第二行
- print(df.loc[[0, 1]])
- df = pd.DataFrame(data, index = [“day1”, “day2”, “day3”])
- print(df.loc[“day2”])
data = {
"calories": [420, 380, 390], "duration": [50, 40, 45]}
df = pd.DataFrame(data, columns=["calories", "duration"])
print(df)
print("*" * 30)
print(df.loc[2])
print(df.loc[0])
print('*' * 30)
print(df.loc[[0, 2]])
print(type(df.loc[0]))
print(type(df.loc[[0, 2]]))
data = {
"calories"