Pandas学习01

一维数组与常用操作

import pandas as pd
import matplotlib.pyplot as plt

# 设置输出结果列对齐
pd.set_option('display.unicode.ambiguous_as_wide',True)
pd.set_option('display.unicode.east_asian_width',True)

# 自动创建从0开始非负整数索引
s1=pd.Series(range(1,20,5))
# 使用字典创建Series,使用字典的“键”作为索引
s2=pd.Series({'语文':90,'数学':92,'Python':98,'物理':87,'化学':92})
# 修改指定索引对应的值
s1[3]=-17
s2['语文']=94

print('s1原始数据'.ljust(20,'='))
print(s1)

print('对s1所有数据求绝对值'.ljust(20,'='))
print(abs(s1))

print('对s1所有数据的值加5'.ljust(20,'='))
print(s1+5)

print('s1的每行索引前面加上数字2'.ljust(20,'='))
print(s1.add_prefix(2))

print('s2原始数据'.ljust(20,'='))
print(s2)

print('s2数据的直方图'.ljust(20,'='))
s2.hist()
plt.show()

print('s2的每行索引后面加上_张三'.ljust(20,'='))
print(s2.add_suffix('_张三'))

print('最大值的索引'.ljust(20,'='))
print(s2.idxmax())

print('测试s2的值是否在指定区间内'.ljust(20,'='))
print(s2.between(90,94,inclusive=True))

print('查看s2中90分以上的数据'.ljust(20,'='))
print(s2[s2>90])

print('查看s2中大于中值的数据'.ljust(20,'='))
print(s2[s2>s2.median()])

print('s2与数字之间的运算'.ljust(20,'='))
print(round((s2**0.5)*10,1))

print('s2的中值'.ljust(20,'='))
print(s2.median())

print('s2中最小的两个值'.ljust(20,'='))
print(s2.nsmallest(2))

# 两个等长Series对象之间可以进行四则运算和幂运算
# 只对两个Series对象中都有的索引对应的值进行计算
# 非共同索引对应的值为空值NaN
print('两个Series对象相加'.ljust(20,'='))
print(pd.Series(range(5))+pd.Series(range(5,10)))

# pipe()方法可以实现函数链式调用的功能
print('每个值的平方对5的余数'.ljust(20,'='))
print(pd.Series(range(5)).pipe(lambda x,y,z:(x**y)%z,2,5))

print('每个值加3之后再乘以3'.ljust(20,'='))
print(pd.Series(range(5)).pipe(lambda x:x+3).pipe(lambda x:x*3))

# apply()方法用来对Series对象的值进行函数运算
print('每个值加3'.ljust(20,'='))
print(pd.Series(range(5)).apply(lambda x:x+3))

print('标准差、无偏方差、无偏标准差'.ljust(20,'='))
print(pd.Series(range(5)).std())
print(pd.Series(range(5)).var())
print(pd.Series(range(5)).sem())

print('查看是否存在等价于True的值'.ljust(20,'='))
print(any(pd.Series([3,0,True])))

print('查看是否所有的值都等价于True'.ljust(20,'='))
print(all(pd.Series([3,0,True])))

运行结果如下:

s1原始数据==============
0     1
1     6
2    11
3   -17
dtype: int64
对s1所有数据求绝对值=========
0     1
1     6
2    11
3    17
dtype: int64
对s1所有数据的值加5=========
0     6
1    11
2    16
3   -12
dtype: int64
s1的每行索引前面加上数字2======
20     1
21     6
22    11
23   -17
dtype: int64
s2原始数据==============
语文      94
数学      92
Python    98
物理      87
化学      92
dtype: int64
s2数据的直方图============

s2的每行索引后面加上_张三======
语文_张三      94
数学_张三      92
Python_张三    98
物理_张三      87
化学_张三      92
dtype: int64
最大值的索引==============
Python
测试s2的值是否在指定区间内======
语文       True
数学       True
Python    False
物理      False
化学       True
dtype: bool
查看s2中90分以上的数据=======
语文      94
数学      92
Python    98
化学      92
dtype: int64
查看s2中大于中值的数据========
语文      94
Python    98
dtype: int64
s2与数字之间的运算==========
语文      97.0
数学      95.9
Python    99.0
物理      93.3
化学      95.9
dtype: float64
s2的中值===============
92.0
s2中最小的两个值===========
物理    87
数学    92
dtype: int64
两个Series对象相加========
0     5
1     7
2     9
3    11
4    13
dtype: int64
每个值的平方对5的余数=========
0    0
1    1
2    4
3    4
4    1
dtype: int64
每个值加3之后再乘以3=========
0     9
1    12
2    15
3    18
4    21
dtype: int64
每个值加3===============
0    3
1    4
2    5
3    6
4    7
dtype: int64
标准差、无偏方差、无偏标准差======
1.5811388300841898
2.5
0.7071067811865476
查看是否存在等价于True的值=====
True
查看是否所有的值都等价于True====
False

时间序列与常用操作

import pandas as pd 

# start指定起始日期,end指定结束日期,periods指定生成的数据数量
# freq指定时间间隔,D表示天,W表示周,H表示小时
# M表示月末最后一天,MS表示月初第一天
# T表示分钟,Y表示年末最后一天,YS表示年初第一天

print('间隔5天'.ljust(30,'='))
print(pd.date_range(start='20200601',end='20200630',freq='5D'))

print('间隔一周'.ljust(30,'='))
print(pd.date_range(start='20200601',end='20200630',freq='W'))

print('间隔2天,5个数据'.ljust(30,'='))
print(pd.date_range(start='20200601',periods=5,freq='2D'))

print('间隔3小时,8个数据'.ljust(30,'='))
print(pd.date_range(start='20200601',periods=8,freq='3H'))

print('3:00开始,间隔一分钟,12个数据'.ljust(30,'='))
print(pd.date_range(start='202006010300',periods=12,freq='T'))

print('间隔1月,月末最后一天'.ljust(30,'='))
print(pd.date_range(start='20200101',end='20201231',freq='M'))

print('间隔1年,6个数据,年末最后一天'.ljust(30,'='))
print(pd.date_range(start='20200101',periods=6,freq='A'))

print('间隔1年,6个数据,年初第一天'.ljust(30,'='))
print(pd.date_range(start='20200101',periods=6,freq='AS'))

# 使用日期时间做索引,创建Series对象
data=pd.Series(index=pd.date_range(start='20200601',periods=24,freq='H'),data=range(24))
print('前5条数据'.ljust(30,'='))
print(data[:5])

print('3小时重采样,计算均值'.ljust(30,'='))
print(data.resample('3H').mean())

print('5小时重采样,求和'.ljust(30,'='))
print(data.resample('5H').sum())

# OHLC分别表示OPEN,HIGH,LOW,CLOSE
print('5小时重采样,统计OHLC值'.ljust(30,'='))
print(data.resample('5H').ohlc())

print('所有日期替换为第二天'.ljust(30,'='))
data.index=data.index+pd.Timedelta('1D')
print(data[:5])

print('查看指定日期是周几'.ljust(30,'='))
print(pd.Timestamp('20200701').day_name())

print('查看指定日期所在年是否为闰年'.ljust(30,'='))
print(pd.Timestamp('201909300800').is_leap_year)

print('查看指定日期所在的季度和月份'.ljust(30,'='))
day=pd.Timestamp('20191025')
print(day.quarter,day.month)

print('转换为Python的日期时间对象'.ljust(30,'='))
print(day.to_pydatetime())

运行结果如下:

间隔5==========================
DatetimeIndex(['2020-06-01', '2020-06-06', '2020-06-11', '2020-06-16',
               '2020-06-21', '2020-06-26'],
              dtype='datetime64[ns]', freq='5D')
间隔一周==========================
DatetimeIndex(['2020-06-07', '2020-06-14', '2020-06-21', '2020-06-28'], dtype='datetime64[ns]', freq='W-SUN')
间隔2天,5个数据=====================
DatetimeIndex(['2020-06-01', '2020-06-03', '2020-06-05', '2020-06-07',
               '2020-06-09'],
              dtype='datetime64[ns]', freq='2D')
间隔3小时,8个数据====================
DatetimeIndex(['2020-06-01 00:00:00', '2020-06-01 03:00:00',
               '2020-06-01 06:00:00', '2020-06-01 09:00:00',
               '2020-06-01 12:00:00', '2020-06-01 15:00:00',
               '2020-06-01 18:00:00', '2020-06-01 21:00:00'],
              dtype='datetime64[ns]', freq='3H')
3:00开始,间隔一分钟,12个数据============
DatetimeIndex(['2020-06-01 03:00:00', '2020-06-01 03:01:00',
               '2020-06-01 03:02:00', '2020-06-01 03:03:00',
               '2020-06-01 03:04:00', '2020-06-01 03:05:00',
               '2020-06-01 03:06:00', '2020-06-01 03:07:00',
               '2020-06-01 03:08:00', '2020-06-01 03:09:00',
               '2020-06-01 03:10:00', '2020-06-01 03:11:00'],
              dtype='datetime64[ns]', freq='T')
间隔1月,月末最后一天===================
DatetimeIndex(['2020-01-31', '2020-02-29', '2020-03-31', '2020-04-30',
               '2020-05-31', '2020-06-30', '2020-07-31', '2020-08-31',
               '2020-09-30', '2020-10-31', '2020-11-30', '2020-12-31'],
              dtype='datetime64[ns]', freq='M')
间隔1年,6个数据,年末最后一天==============
DatetimeIndex(['2020-12-31', '2021-12-31', '2022-12-31', '2023-12-31',
               '2024-12-31', '2025-12-31'],
              dtype='datetime64[ns]', freq='A-DEC')
间隔1年,6个数据,年初第一天===============
DatetimeIndex(['2020-01-01', '2021-01-01', '2022-01-01', '2023-01-01',
               '2024-01-01', '2025-01-01'],
              dtype='datetime64[ns]', freq='AS-JAN')5条数据=========================
2020-06-01 00:00:00    0
2020-06-01 01:00:00    1
2020-06-01 02:00:00    2
2020-06-01 03:00:00    3
2020-06-01 04:00:00    4
Freq: H, dtype: int64
3小时重采样,计算均值===================
2020-06-01 00:00:00     1
2020-06-01 03:00:00     4
2020-06-01 06:00:00     7
2020-06-01 09:00:00    10
2020-06-01 12:00:00    13
2020-06-01 15:00:00    16
2020-06-01 18:00:00    19
2020-06-01 21:00:00    22
Freq: 3H, dtype: int64
5小时重采样,求和=====================
2020-06-01 00:00:00    10
2020-06-01 05:00:00    35
2020-06-01 10:00:00    60
2020-06-01 15:00:00    85
2020-06-01 20:00:00    86
Freq: 5H, dtype: int64
5小时重采样,统计OHLC值================
                     open  high  low  close
2020-06-01 00:00:00     0     4    0      4
2020-06-01 05:00:00     5     9    5      9
2020-06-01 10:00:00    10    14   10     14
2020-06-01 15:00:00    15    19   15     19
2020-06-01 20:00:00    20    23   20     23
所有日期替换为第二天====================
2020-06-02 00:00:00    0
2020-06-02 01:00:00    1
2020-06-02 02:00:00    2
2020-06-02 03:00:00    3
2020-06-02 04:00:00    4
Freq: H, dtype: int64
查看指定日期是周几=====================
Wednesday
查看指定日期所在年是否为闰年================
False
查看指定日期所在的季度和月份================
4 10
转换为Python的日期时间对象==============
2019-10-25 00:00:00
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Pandas中,可以使用concat()函数将Series和DataFrame对象组合在一起。要求两列的差集,可以使用不同的方法实现。 方法一是平行匹配,通过比较两列的元素来求得差集。使用df[df["col01"] != df["col02"]]可以得到平行匹配的差集结果。 方法二是交叉匹配,通过集合运算符或循环判断来求得差集。使用集合的差集运算符或者使用列表推导式来实现。例如,可以使用list(set(list_dev).difference(set(list_prod))) 或者 list(set(list_prod)^set(list_dev))来得到交叉匹配的差集结果。 另外,还可以使用concat()函数和drop_duplicates()函数来求得差集。例如,可以使用diff=pd.concat([df1,df2,df2]).drop_duplicates(keep=False)来得到差集结果。 总结来说,Pandas可以通过上述方法来求得差集。具体使用哪种方法取决于你的需求和数据结构。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Pandas求两个dataframe差集 详解](https://blog.csdn.net/guoyc439/article/details/124165334)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python语言学习:利用pandas对两列字段元素求差集(对比两列字段所有元素的异同)](https://blog.csdn.net/qq_41185868/article/details/128799131)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据攻城小狮子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值