欢迎光临
我们一直在努力

Pandas Exercises

Pandas Exercises

导入pandas库

import pandas as pd

检查当前pandas版本

print(pd.__version__)

用列表创建 Series

arr = [0, 1, 2, 3, 4]
s1 = pd.Series(arr)
s1

用 ndarray 创建 Series

import numpy as np
# 创建一个随机的数组
# numpy.random.randn 是一个用于生成符合标准正态分布(均值为0,方差为1)的随机数的函数
n = np.random.randn(10)

# 给一维数组 Series 设定索引
index = [\’a\’, \’b\’, \’c\’, \’d\’, \’e\’, \’f\’, \’g\’, \’h\’, \’i\’, \’j\’]
s2 = pd.Series(n, index=index)
s2

用字典创建 Series

dict = {

\’a\’: 1, \’b\’: 2, \’c\’: 3, \’d\’: 4, \’e\’: 5, \’f\’: 6}
s3 = pd.Series(dict)
s3

修改Series 的索引

print(s1)
s1.index = [\’A\’,\’B\’,\’C\’,\’D\’,\’E\’]
s1

合并 Series

# concat 沿着轴(axis)把多个dataframe/series合并成一个,axis默认为0,按行合并,为1按列合并
# pandas.concat(objs, axis=0, join=\’outer\’, ignore_index=False)
# objs:一个列表,内容可以是DataFrame或者Series,可以混合
# join:合并的时候索引的对齐方式,默认outer join,也可以是inner join
# ignore_index:是否忽略掉原来的数据索引

s4 = pd.concat([s1, s3])
s4

Series: 移除元素

print(s4)
# 移除单个元素
s4 = s4.drop(\’f\’)
print(s4)

# 移除多个元素
s4 = s4.drop([\’a\’,\’b\’,\’c\’,\’d\’,\’e\’])
print(s4)

index_to_drop = [\’A\’,\’B\’,\’C\’]
s4 = s4.drop(index_to_drop)
print(s4)

Series: 修改指定索引的元素

s4[\’E\’] = 6
s4

Series: 获取指定索引位置的元素

s4[\’D\’]

Series 切片:取s3的前三个元素

s3[:3]

Series 加法运算

# add()方法将标量值添加到Series中的每个元素,不改变原Series
print(\”\\nSeries after adding a scalar value:\”)
print(s1.add(2))

# 使用add()方法将两个Series相加
# 注意:两个Series相加是根据索引匹配相加,无法匹配索引返回NAN值
print(\”\\nResult of adding two Series:\”)
s5 = s1.add(s4)
print(s5)

# add() 方法还支持填充缺失值或空值
print(\”\\nResult of adding two Series with missing values:\”)
print(s1.add(s5,fill_value=0))

Series 减法运算

# Series.sub(other, level=None, fill_value=None, axis=0)
# other:其他系列或列表类型要从调用者系列中减去。
# fill_value:在系列/列表中被NaN替换的值,然后再进行减法。
# level:在多索引的情况下,level的整数值。
# sub()方法将标量值减到Series中的每个元素,不改变原Series
print(s1.sub(1))

# 使用sub()方法将两个Series相减
# 注意:两个Series相减是根据索引匹配相减,无法匹配索引返回NAN值
s5 = s1.sub(s4)
print(s5)

# sub() 方法还支持填充缺失值或空值
print(s1.sub(s5,fill_value=1))

Series 乘法运算

print(s1.mul(2))

s5 = s1.mul(s4)
print(s5)

print(s1.mul(s5,fill_value=2))

Series 除法运算

print(s1.div(2))

s5 = s1.div(s4)
print(s5)

print(s1.div(s5,fill_value=2))

Series 中位数、均值、求和、最值

print(s1)
# 中位数
print(s1.median())
# 均值
print(s1.mean())
# 求和
print(s1.sum())
# 最值
print(s1.max())
print(s1.min())

用 Numpy 创建 DataFrame

  • pandas.date_range(start=None, end=None, periods=None, freq=None, tz=None,normalize=False, name=None, inclusive=\’both\’, unit=None)
    • **start:**str,datetime-like,序列起始日期
    • **end:**str,datetime-like,序列结束日期
    • **periods:**int,None,要生成的时间点数量
    • **freq:**str,DateOffset,日期间隔频率(‘B’: 工作日,‘W’: 周,‘M’: 月末,‘T’ 或 ‘min’: 分钟…)
    • **tz:**str或pytz.timezone对象,指定时区(如:‘Asia/Shanghai’)
    • **normalize:**bool,默认False,如果为True,则所有日期时间标准化到午夜,即时间部分将被忽略
    • **name:**str,为生成的 DatetimeIndex 对象指定名称
    • **inclusive:**str,默认值为’both’,指定生成日期范围的包容性,可以是 ‘both’(包括起始和结束日期)、‘neither’(不包括起始和结束日期)、‘left’(包括起始日期)、‘right’(包括结束日期)
    • **unit:**str 或 None,指定输入的单位(例如 ‘ms’ 表示毫秒)。仅在 start 和 end 为整数时使用

dates=pd.date_range(\’today\’,periods=6) # Define time sequence as index
num_arr=np.random.randn(6,4) # Import numpy random array
columns=[\’A\’,\’B\’,\’C\’,\’D\’] # Use the table as the column name
df1=pd.DataFrame(num_arr,index=dates,columns=columns)
df1

字典创建 DataFrame

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

查看 DataFrame 的数据类型

df2.dtypes

查看df2表前五行的数据

df2.head()

查看df2表末三行的数据

df2.tail(3)

查看df2表行索引和列索引和值

df2.index

df2.columns

df2.values

查看df2表的统计数据

df2.describe()

实现df2表转置操作

df2.T

df2表实现按年龄大小排序

df2.sort_values(by=\’age\’,ascending=False) #从大到小

DataFrame 切片操作

df2[1:3]

根据标签查询df2表的数据

df2[\’age\’]

df2.age # Equivalent to df2[\’age\’]

根据标签列查询df2表的数据

df2[[\’age\’,\’animal\’]]

根据位置查询df2表的数据

df2.iloc[1:3]

复制df2表的数据

df3 = df2.copy()
df3

判断df3表是否存在空置,存在返回True

df3.isnull()

给df3表增加新列

df3[\’NAN\’] = df3[\’age\’].isnull().astype(int)
df3

基于位置修改表格内的数据

# iat 是 pandas 中用于基于整数位置快速访问DataFrame中单个值的函数,只能访问单个值,比 iloc 更快(专门为标量访问优化),支持读取和赋值
# df.iat[row_index, column_index]
df3.iat[1, 0] = 2
df3

基于标签修改表格内的数据

df3.loc[\’f\’,\’age\’] = 1.5
df3

DataFrame 的统计函数应用

# 均值
print(df3.mean(numeric_only=True))

# 求和
print(df3[\’visits\’].sum())

大小写字符转换

string = pd.Series([\’A\’,\’B\’,\’C\’,\’Aaba\’, \’Baca\’, np.nan, \’CABA\’, \’dog\’, \’cat\’])
print(string)
print(string.str.lower())
print(string.str

赞(0)
未经允许不得转载:171主机测评 » Pandas Exercises
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址