pandas基础操作

来自实验楼《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'])

 

posted @ 2018-12-05 16:05  forthlss  阅读(248)  评论(0编辑  收藏  举报