Pandas库的主要使用方法
import pandas as pd
Series
Series由index和列组成,类似于一维数组(或数据库中的id与数据实体)pandas.Series(<data>, <index>, <dtype>, <series_name>, <copy>)
<data>
为list、tuple、dict等ndarray类型<index>
为数据索引标签,默认从 0 开始<dtype>
为所存储数据类型(默认自动判断)<name>
为Series名称<copy>
为拷贝数据,缺省为False
- ‘Series’首字母要大写
1
2
3
4
5
6a = ['a','b','c']
myvar = pd.Series(a)
print(myvar)
print(myvar[2]) # 根据索引值读取数据
myvar = pd.Series(a, index=['x', 'y', 'z']) # 也可指定索引值
通过dict创建Series,字典的key会变为series的索引值
1 | name = {1: "Alice", 2: "Bob", 3: "Cindy"} |
DataFrame
- DataFrame为二维表格型数据结构(存在行索引与列索引),类似于二维数组
- 其含有一组有序的列,每列数据类型可不同
- 类似于由一组Series组成的dict
pandas.DataFrame(<data>, <index>, <columns>, <dtype>, <copy>)
<data>
为list、tuple、dict等ndarray类型<index>
为数据索引标签(或行标签)<columns>
为列标签,缺省为 RangeIndex(0, 1, 2, …, n)<dtype>
为所存储数据类型(默认自动判断)<copy>
为拷贝数据,缺省为False
1
2
3data = [['Alice', 10], ['Bob', 12], ['Cindy', 13]]
df = pd.DataFrame(data, columns=['Name', 'Age']) #或index=['stu1', 'stu2']
print(df)
使用dict配合ndarrays创建DataFrame
1 | data = {'Name':['Alice', 'Bob', 'Cindy'], 'Age':[10, 12, 13]} |
- ndarrays的长度需相同
- 若传递了
<index>
,则<index>
的长度应等于ndarray的长度 - 若未传递
<index>
,则缺省下索引为range(n)
,其中 n 为ndarray长度
使用dict(key/value)创建DataFrame,其中dict的key为列名
1 | data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}] |
可使用loc
属性返回指定行的数据,缺省下第一行索引为 0
比如第一行为df.loc[0]
或df.loc['stu1']
第一行及第二行为df.loc[[0, 1]]
或df.loc[['stu1', 'stu2']]
返回结果为一个Series数据
.csv
通过read_csv()
将.csv文件转储为DataFrame数据
1 | df = pd.read_csv('example.csv') |
或通过to_csv()
将DataFrame数据转储为.csv文件
1 | #三个字段name, age, gender |
- 通过
head(n)
方法读取前n行(缺省前五行) - 通过
tail(n)
方法读取后n行(缺省后五行) - 通过
info()
方法返回.csv文件基本信息(如行数、列数、各列数据类型等)1
2
3print(df.head()) #前五行
print(df.tail(7)) #后七行
print(df.info()) #.csv信息
数据处理
统计计算
- 使用
mean()
方法计算列的均值 - 使用
median()
方法计算列的中位数 - 使用
mode()
方法计算列的众数
1 | df = pd.read_csv('stu.csv') |
去除空值
DataFrame.dropna(<axis>, <how>, <thresh>, <subset>, <inplace>)
<axis>
默认为 0,即逢空值剔除整行,若设置为 1 则表示逢空值剔除整列<how>
默认为’any’,即一行(或一列)中任何数据为空则剔除整行(或整列),若设置为’all’则仅当一行(或一列)中任何数据均为空时才剔除整行(或整列)<thresh>
设置保留整行(或整列)所需的非空值的数量阈值<subset>
设置需要检查的列<inplace>
默认为False
,即返回一个新的DataFrame,不会修改原数据。若设置为True
,则将计算得到的值覆盖原数据并返回None
通过
isnull()
方法判断列(或行)中各单元格是否为空通过
na_values
指定空数据类型通过
fillna
指定特定值替换空字段1
2
3
4
5
6
7
8
9
10missing_values = ['n/a', 'na', '--'] #指定空数据范例
df = pd.read_csv('stu.csv', na_values = missing_values)
print(df['city'].isnull())
new_df = df.dropna(subset=['city']) #剔除city列中字段值为空的行
print(new_df.to_string()) #输出新DataFrame
#指定city列中使用'null_city'替换空字段
df['city'].fillna('null_city', inplace=True)
print(df.to_string())
去除格式错误数据
将列中单元格统一转换为相同格式的数据
1 | #第三个日期格式错误 |
去除内容错误数据
对错误数据进行替换或移除
1 | person = { |
去除重复数据
- 通过
duplicated()
检测重复数据 - 通过
drop_duplicates()
删除重复数据1
2
3
4
5
6
7
8
9
10person = {
'name': ['Alice', 'Bob', 'Bob', 'Cindy'],
'age': [10, 12, 12, 1333]
}
df = pd.DataFrame(person)
print(df.duplicated()) #重复数据返回True
df.drop_duplicates(inplace=True) #删除重复行
print(df)
- Title: Pandas库的主要使用方法
- Author: Zielorem
- Created at : 2022-10-11 14:37:29
- Updated at : 2023-07-14 01:06:58
- Link: https://zielorem.github.io/2022/10/11/pandas/
- License: This work is licensed under CC BY-NC-SA 4.0.