来自实验楼《Pandas百题大冲关》,刷到一半当笔记记了
没有参考价值,见原链接https://www.shiyanlou.com/courses/running
创建DataFrame数据类型
通过Numpy数组创建DataFrame
import numpy as np import pandas as pd dates = pd.date_range('today', periods=6) # 定义时间序列作为 index num_arr = np.random.randn(6, 4) # 传入 numpy 随机数组 columns = ['A', 'B', 'C', 'D'] # 将列表作为列名 df1 = pd.DataFrame(num_arr, index=dates, columns=columns) df1
通过字典数组创建DF
data = {'animal': ['cat', 'cat', 'snake', 'dog', 'dog', 'cat', 'snake', 'cat', 'dog', 'dog'], 'age': [2.5, 3, 0.5, np.nan, 5, 2, 4.5, np.nan, 7, 3], 'visits': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1], 'priority': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']} labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] df2 = pd.DataFrame(data, index=labels) df2
查看DF数据类型
df2.dtypes
预览DF的前后几行数据
df2.head() df2.tail(3)
查看索引
df2.index
查看列名
df.columns
查看数值
df.values
查看统计数据
df2.describe() age visits count 8.000000 10.000000 mean 3.437500 1.900000 std 2.007797 0.875595 min 0.500000 1.000000 25% 2.375000 1.000000 50% 3.000000 2.000000 75% 4.625000 2.750000 max 7.000000 3.000000
转置操作
df2.T a b c d e f g h i j animal cat cat snake dog dog cat snake cat dog dog age 2.5 3 0.5 NaN 5 2 4.5 NaN 7 3 visits 1 3 2 3 2 3 1 1 2 1 priority yes yes no yes no no no yes no no
按列排序
df2.sort_values(by='age')
切片
df2[1:3] animal age visits priority b cat 3.0 3 yes c snake 0.5 2 no
通过标签查询(列)
df2['age'] #或者df2.age
查询多列
df2[['age','animal']]
通过位置查询
df2.iloc[1:3] animal age visits priority b cat 3.0 3 yes c snake 0.5 2 no
副本拷贝
df3 = df2.copy()
判断是否为空
df3.isnull()
animal age visits priority
a False False False False
b False False False False
c False False False False
d False True False False
e False False False False
f False False False False
g False False False False
h False True False False
i False False False False
j False False False False
这里可以用isany()来得到空行/列或者空值个数
添加列数据
num = pd.Series([0,1,2,3,4,5,6,7,8,9],index=df3.index) df3['No.'] = num
根据下标值进行更改
# 修改第 2 行与第 1 列对应的值 3.0 → 2.0 df3.iat[1, 0] = 2 # 索引序号从 0 开始,这里为 1, 0
根据标签进行修改
df3.loc['f','age'] = 1.5
求平均值
df3.mean() age 3.4375 visits 1.9000 No. 4.5000 dtype: float64
对列求和
df3['visits'].sum()
将字符串转为大小写
string = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat']) print(string) string.str.lower()
string.str.upper()
DataFrame缺失值操作
对缺失值进行填充
df4 = df3.copy() print(df4) df4.fillna(value=3)
删除存在缺失值的行
df5 = df3.copy() print(df5) df5.dropna(how='any')
按指定列对齐
left = pd.DataFrame({'key': ['foo1', 'foo2'], 'one': [1, 2]}) right = pd.DataFrame({'key': ['foo2', 'foo3'], 'two': [4, 5]}) print(left) print(right) # 按照 key 列对齐连接,只存在 foo2 相同,所以最后变成一行 pd.merge(left, right, on='key')
文件操作
csv文件写入
df3.to_csv('animal.csv') print("写入成功.")
csv读取
df_animal = pd.read_csv('animal.csv') df_animal
excel文件写入、读取
df3.to_excel('animal.xlsx', sheet_name='Sheet1') print("写入成功.") pd.read_excel('animal.xlsx', 'Sheet1', index_col=None, na_values=['NA'])