pd.read_csv(filename)读取 CSV 文件; pd.read_excel(filename)读取 Excel 文件; pd.read_sql(query, connection_object)从 SQL 数据库读取数据; pd.read_json(json_string)从 JSON 字符串中读取数据; pd.read_html(url)从 HTML 页面中读取数据。 import pandas as pd
# 从 CSV 文件中读取数据
df = pd. read_csv ( 'data.csv' )
# 从 Excel 文件中读取数据
df = pd. read_excel ( 'data.xlsx' )
# 从 SQL 数据库中读取数据
import sqlite3
conn = sqlite3. connect ( 'database.db' )
df = pd. read_sql ( 'SELECT * FROM table_name' , conn )
# 从 JSON 字符串中读取数据
json_string = '{"name": "John", "age": 30, "city": "New York"}'
df = pd. read_json ( json_string )
# 从 HTML 页面中读取数据
url = 'https://www.runoob.com'
dfs = pd. read_html ( url )
df = dfs [ 0 ] # 选择第一个数据框
# 显示前五行数据
df. head ( )
# 显示后五行数据
df. tail ( )
# 显示数据信息
df. info ( )
# 显示基本统计信息
df. describe ( )
# 显示数据的行数和列数
df. shape
import pandas as pd
data = [
{ "name" : "Google" , "likes" : 25 , "url" : "https://www.google.com" } ,
{ "name" : "Runoob" , "likes" : 30 , "url" : "https://www.runoob.com" } ,
{ "name" : "Taobao" , "likes" : 35 , "url" : "https://www.taobao.com" }
df = pd. DataFrame ( data )
# 显示前两行数据
print ( df. head ( 2 ) )
# 显示前最后一行数据
print ( df. tail ( 1 ) )

以上实例输出结果为:

name likes url 0 Google 25 https://www.google.com 1 Runoob 30 https://www.runoob.com name likes url 2 Taobao 35 https://www.taobao.com
函数 说明
df.head(n) 显示前 n 行数据;
df.tail(n) 显示后 n 行数据;
df.info() 显示数据的信息,包括列名、数据类型、缺失值等;
df.describe() 显示数据的基本统计信息,包括均值、方差、最大值、最小值等;
df.shape 显示数据的行数和列数。
# 删除包含缺失值的行或列
df. dropna ( )
# 将缺失值替换为指定的值
df. fillna ( 0 )
# 将指定值替换为新值
df. replace ( 'old_value' , 'new_value' )
# 检查是否有重复的数据
df. duplicated ( )
# 删除重复的数据
df. drop_duplicates ( )

数据选择和切片

函数 说明
df.dropna() 删除包含缺失值的行或列;
df.fillna(value) 将缺失值替换为指定的值;
df.replace(old_value, new_value) 将指定值替换为新值;
df.duplicated() 检查是否有重复的数据;
df.drop_duplicates() 删除重复的数据。
# 选择指定的列
df [ 'column_name' ]
# 通过标签选择数据
df. loc [ row_index , column_name ]
# 通过位置选择数据
df. iloc [ row_index , column_index ]
# 通过标签或位置选择数据
df. ix [ row_index , column_name ]
# 选择指定的列
df. filter ( items = [ 'column_name1' , 'column_name2' ] )
# 选择列名匹配正则表达式的列
df. filter ( regex = 'regex' )
# 随机选择 n 行数据
df. sample ( n = 5 )
函数 说明
df[column_name] 选择指定的列;
df.loc[row_index, column_name] 通过标签选择数据;
df.iloc[row_index, column_index] 通过位置选择数据;
df.ix[row_index, column_name] 通过标签或位置选择数据;
df.filter(items=[column_name1, column_name2]) 选择指定的列;
df.filter(regex='regex') 选择列名匹配正则表达式的列;
df.sample(n) 随机选择 n 行数据。
# 按照指定列的值排序
df. sort_values ( 'column_name' )
# 按照多个列的值排序
df. sort_values ( [ 'column_name1' , 'column_name2' ] , ascending = [ True , False ] )
# 按照索引排序
df. sort_index ( )

数据分组和聚合

函数 说明
df.sort_values(column_name) 按照指定列的值排序;
df.sort_values([column_name1, column_name2], ascending=[True, False]) 按照多个列的值排序;
df.sort_index() 按照索引排序。
# 按照指定列进行分组
df. groupby ( 'column_name' )
# 对分组后的数据进行聚合操作
df. aggregate ( 'function_name' )
# 生成透视表
df. pivot_table ( values = 'value' , index = 'index_column' , columns = 'column_name' , aggfunc = 'function_name' )
函数 说明
df.groupby(column_name) 按照指定列进行分组;
df.aggregate(function_name) 对分组后的数据进行聚合操作;
df.pivot_table(values, index, columns, aggfunc) 生成透视表。
# 将多个数据框按照行或列进行合并
df = pd. concat ( [ df1 , df2 ] )
# 按照指定列将两个数据框进行合并
df = pd. merge ( df1 , df2 , on = 'column_name' )

数据选择和过滤

函数 说明
pd.concat([df1, df2]) 将多个数据框按照行或列进行合并;
pd.merge(df1, df2, on=column_name) 按照指定列将两个数据框进行合并。

数据统计和描述

函数 说明
df.loc[row_indexer, column_indexer] 按标签选择行和列。
df.iloc[row_indexer, column_indexer] 按位置选择行和列。
df[df['column_name'] > value] 选择列中满足条件的行。
df.query('column_name > value') 使用字符串表达式选择列中满足条件的行。

假设我们有如下的 JSON 数据,数据保存到 data.json 文件:

data.json 文件

"name" : "Alice" ,
"age" : 25 ,
"gender" : "female" ,
"score" : 80
"name" : "Bob" ,
"age" : null ,
"gender" : "male" ,
"score" : 90
"name" : "Charlie" ,
"age" : 30 ,
"gender" : "male" ,
"score" : null
"name" : "David" ,
"age" : 35 ,
"gender" : "male" ,
"score" : 70

我们可以使用 Pandas 读取 JSON 数据,并进行数据清洗和处理、数据选择和过滤、数据统计和描述等操作,具体如下:

import pandas as pd
# 读取 JSON 数据
df = pd. read_json ( 'data.json' )
# 删除缺失值
df = df. dropna ( )
# 用指定的值填充缺失值
df = df. fillna ( { 'age' : 0 , 'score' : 0 } )
# 重命名列名
df = df. rename ( columns = { 'name' : '姓名' , 'age' : '年龄' , 'gender' : '性别' , 'score' : '成绩' } )
# 按成绩排序
df = df. sort_values ( by = '成绩' , ascending = False )
# 按性别分组并计算平均年龄和成绩
grouped = df. groupby ( '性别' ) . agg ( { '年龄' : 'mean' , '成绩' : 'mean' } )
# 选择成绩大于等于90的行,并只保留姓名和成绩两列
df = df. loc [ df [ '成绩' ] >= 90 , [ '姓名' , '成绩' ] ]
# 计算每列的基本统计信息
stats = df. describe ( )
# 计算每列的平均值
mean = df. mean ( )
# 计算每列的中位数
median = df. median ( )
# 计算每列的众数
mode = df. mode ( )
# 计算每列非缺失值的数量
count = df. count ( )

输出结果如下:

姓名 年龄 性别 成绩 1 Bob 0 male 90 # grouped 年龄 成绩 female 25.000000 80 male 27.500000 80 # stats count 1.0 mean 90.0 std NaN min 90.0 25% 90.0 50% 90.0 75% 90.0 max 90.0 # mean 成绩 90.0 dtype: float64 # median 成绩 90.0 dtype: float64 # mode 姓名 成绩 0 Bob 90.0 # count 姓名 1 成绩 1 dtype: int64
函数 说明
df.describe() 计算基本统计信息,如均值、标准差、最小值、最大值等。
df.mean() 计算每列的平均值。
df.median() 计算每列的中位数。
df.mode() 计算每列的众数。
df.count() 计算每列非缺失值的数量。