赞
踩
下面示例展示了如何创建Series及DataFrame
- import pandas as pd
- print(pd.__version__)
- #创建Series对象
- city_name = pd.Series(['Sanfrancisco', 'Sanjose', 'Sacramento'])
- city_population = pd.Series([852469, 1015785, 485199])
- city = pd.DataFrame({'city name' : city_name, 'population' : city_population})
- #将映射string列名称的dict传递给各自的Series,从而创建DataFrame
- #如果Series在长度上不一致,系统则会用特殊的NA/NaN值填充缺失的值
- print(city)
- print(city['city name'][1])
- #根据常用的dict/list指令访问DataFrame数据
- print(city[0:2])
- #切片
- c = city_population / 1000
- print(c)
- #应用基本指令运算
- city = city.reindex([2,0,1])
- print(city)
- #以手动重新排列各行的顺序
- city.apply(lamba val: val>10000)
- 调用apply函数,该函数是pandas里自由度最高的函数,其参数类似于c++的函数指针,需自己实现,遍历整个dataframe,并将所有结果组合起来返回
输出结果
- 0.24.2
- city name population
- 0 Sanfrancisco 852469
- 1 Sanjose 1015785
- 2 Sacramento 485199
读取整个csv文件,并将其加载到DataFrame中
- import pandas as pd
-
- california_housing_dataframe = pd.read_csv("https://download.mlcc.google.cn/mledu-datasets/california_housing_train.csv", sep=",")
- print(california_housing_dataframe.describe())
- #显示一些统计信息
- print(california_housing_dataframe.head())
- #显示该DataFrame的前几个记录
- california_housing_dataframe.hist('housing_median_age')
- #画出某一列中的值的分布直方图
读取csv文件
- import pandas as pd
- new = pd.read_csv('city.csv')//csv文件名称
- print(new)
利用web api进行获取数据
- import requests
- import json
- import pandas as pd
- import numpy as np
- url = 'https://api.seniverse.com/v3/weather/now.json?key=kutzoofe5f2h1w
- yc&location=zibo&language=zh-Hans&unit=c'
- r = requests.get(url)
- print(r.text)#返回为json格式,需对其进行处理
数据准备
(预处理)过程中常常需要进行数据的处理,例如数据清洗包括缺失值和异常值处理,数据变换如规范化数据,数据规约如属性规约(选择部分有代表性的属性)等,在Python有很多进行数据预处理的快速方法,以数据清洗中的缺失值处理为例,在实际过程中常常会发现有的数据是缺失(NaN)的,这些值是需要特别处理的。缺失值的判断可利用numpy中的isnan()函数,而对于Series或DataFrame,缺失值的判断和处理非常的方便,例如df.dropna()可以删掉含NaN(NA)的行,df.dropna(how='all')只丢弃全为NaN的那些行,也可以进行值的插补,例如用0、均值、中位数或众数等进行填充插补,也可用插值法即基于已知点建立插值函数f(x),通过xi求得f(xi)来近似替代,常用方法有拉格朗日插值法和牛顿插值法NaN。以常用的简单填充为例,可用df.fillna(某一个值)方式用某一个值如0或平均值等代替NaN(例如df.fillna(0)表示用0代替NaN),也可用其method参数指定缺失值的填充方向,例如:
- >>> fruit_df = pd.Series(['apple', 'orange', 'pear'], index=[0, 2, 5])
- >>> fruit_df = fruit_df.reindex(range(7))
- >>> fruit_df
- 0 apple
- 1 NaN
- 2 orange
- 3 NaN
- 4 NaN
- 5 pear
- 6 NaN
- dtype: object
- # inplace参数设为True表示直接修改原对象fruit_df,否则将填充后的结果返回,原对象不变
- >>> fruit_df.fillna(method='ffill', inplace = True)
- >>> print(fruit_df)
- 0 apple
- 1 apple
- 2 orange
- 3 orange
- 4 orange
- 5 pear
- 6 pear
- dtype: object
-
ffill表示用前一个非缺失值代替NaN填充,而bfill表示用下一个非缺失数据代替NaN填充,要根据数据的特点选择不同的填充方式,如果选择错误结果可能会不能正确填充,请选择如下填充方式的结果。
- >>> import pandas as pd
- >>> fruit_df = pd.Series(['apple', 'orange', 'pear'], index=[0, 2, 5])
- >>> fruit_df = fruit_df.reindex(range(7))
- >>> fruit_df.fillna(method='bfill', inplace = True)
- >>> print(fruit_df)
- 0 apple
- 1 orange
- 2 orange
- 3 pear
- 4 pear
- 5 pear
- 6 NaN
- dtype: object
时间戳timestamp
- >>> from datetime import date
- >>> firstday = date.fromtimestamp(1464010200)
- >>> lastday = date.fromtimestamp(1495200600)#转换为正常日期
- >>> firstday
- datetime.date(2016, 5, 23)
- >>> lastday
- datetime.date(2017, 5, 19)
- >>> x = date.strftime(firstday,'%Y-%m-%d')#转为固定格式
- >>> x
- '2016-05-23'
- >>> import time
- >>> temp=time.strptime('2015-05-31',"%Y-%m-%d")#格式化为time对象
- >>> temp
- time.struct_time(tm_year=2015, tm_mon=5, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=151, tm_isdst=-1)
- >>> type(temp)
- <class 'time.struct_time'>
创建时间序列
- >>> import pandas as pd
- >>> data = pd.date_range('20190228',periods=2)#periods代表生成长度为多少的序列
- >>> data
- DatetimeIndex(['2019-02-28', '2019-03-01'], dtype='datetime64[ns]', freq='D')
DataFrame的数据显示
- >>> import pandas as pd
- >>> data = pd.read_csv('city.csv')
- >>> data
- Code 国家和地区名 国家和地区名(英文) 国家和地区名(繁体) 大洲
- 0 AD 安道尔 Andorra 安道爾 欧洲
- 1 AE 阿联酋 United Arab Emirates 阿聯 亚洲
- 2 AF 阿富汗 Afghanistan 阿富汗 亚洲
- 3 AG 安提瓜和巴布达 Antigua and Barbuda 安地卡及巴布達 北美洲
- 4 AI 安圭拉 Anguilla 英屬安圭拉 北美洲
- 5 AL 阿尔巴尼亚 Albania 阿爾巴尼亞 欧洲
- 6 AM 亚美尼亚 Armenia 亞美尼亞 亚洲
- 7 AO 安哥拉 Angola 安哥拉 非洲
- 8 AQ 南极洲 Antarctica 南極洲 南极洲
- 9 AR 阿根廷 Argentina 阿根廷 南美洲
- 10 AS 美属萨摩亚 American Samoa 美屬薩摩亞 大洋洲
- 11 AT 奥地利 Austria 奧地利 欧洲
- 12 AU 澳大利亚 Australia 澳洲 大洋洲
- 13 AW 阿鲁巴 Aruba 阿魯巴 北美洲
- 14 AX 奥兰群岛 Åaland Islands 奧蘭群島 欧洲
- 15 AZ 阿塞拜疆 Azerbaijan 亞塞拜然 亚洲
- 16 BA 波黑 Bosnia and Herzegovina 波赫 欧洲
- 17 BB 巴巴多斯 Barbados 巴貝多 北美洲
- 18 BD 孟加拉国 Bangladesh 孟加拉 亚洲
- 19 BE 比利时 Belgium 比利時 欧洲
- 20 BF 布基纳法索 Burkina Faso 布吉納法索 非洲
- 21 BG 保加利亚 Bulgaria 保加利亞 欧洲
- 22 BH 巴林 Bahrain 巴林 亚洲
- 23 BI 布隆迪 Burundi 蒲隆地 非洲
- 24 BJ 贝宁 Benin 貝南 非洲
- 25 BL 圣巴泰勒米岛 Saint Barthélemy 聖巴瑟米 北美洲
- 26 BM 百慕大 Bermuda 百慕達 北美洲
- 27 BN 文莱 Brunei Darussalam 汶萊 亚洲
- 28 BO 玻利维亚 Bolivia, Plurinational 玻利維亞 南美洲
- 29 BQ 荷兰加勒比区 Bonaire, Sint Eustatius and Saba 荷蘭加勒比區 北美洲
- .. ... ... ... ... ...
- 221 TL 东帝汶 Timor-Leste 東帝汶 大洋洲
- 222 TM 土库曼斯坦 Turkmenistan 土庫曼 亚洲
- 223 TN 突尼斯 Tunisia 突尼西亞 非洲
- 224 TO 汤加 Tonga 東加 大洋洲
- 225 TR 土耳其 Turkey 土耳其 亚洲
- 226 TT 特立尼达和多巴哥 Trinidad and Tobago 特立尼達和多巴哥 北美洲
- 227 TV 图瓦卢 Tuvalu 吐瓦魯 大洋洲
- 228 TW 中国台湾 Taiwan, Province of China 中國台灣 亚洲
- 229 TZ 坦桑尼亚 Tanzania, United Republic of 坦尚尼亞 非洲
- 230 UA 乌克兰 Ukraine 烏克蘭 欧洲
- 231 UG 乌干达 Uganda 烏干達 非洲
- 232 UM 美国本土���小岛屿 United States Minor Outlying Islands 美國邊疆小島 大洋洲
- 233 US 美国 United States 美國 北美洲
- 234 UY 乌拉圭 Uruguay 烏拉圭 南美洲
- 235 UZ 乌兹别克斯坦 Uzbekistan 烏茲別克 亚洲
- 236 VA 梵蒂冈 Holy See (Vatican City State) 梵蒂岡 欧洲
- 237 VC 圣文森特和格林纳丁斯 Saint Vincent and the Grenadines 聖文森及格瑞那丁 北美洲
- 238 VE 委内瑞拉 Venezuela, Bolivarian Republic of 委內瑞拉 南美洲
- 239 VG 英属维尔京群岛 Virgin Islands, U.S. 英屬維爾京群島 北美洲
- 240 VI 美属维尔京群岛 United States Virgin Islands 美屬維爾京群島 北美洲
- 241 VN 越南 Vietnam 越南 亚洲
- 242 VU 瓦努阿图 Vanuatu 萬那杜 大洋洲
- 243 WF 瓦利斯和富图纳 Wallis and Futuna 沃里斯與伏塔那島 大洋洲
- 244 WS 萨摩亚 Samoa 薩摩亞 大洋洲
- 245 XK 科索沃 Kosovo 科索沃 欧洲
- 246 YE 也门 Yemen 葉門 亚洲
- 247 YT 马约特 Mayotte 美亞特 非洲
- 248 ZA 南非 South Africa 南非 非洲
- 249 ZM 赞比亚 Zambia 尚比亞 非洲
- 250 ZW 津巴布韦 Zimbabwe 辛巴威 非洲
-
- [251 rows x 5 columns]
- >>> data.index
- RangeIndex(start=0, stop=251, step=1)
- >>> list(data.index)
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250]
- >>> list(data.columns)
- ['Code', '国家和地区名', '国家和地区名(英文)', '国家和地区名(繁体)', '大洲']
- >>> data.values
- array([['AD', '安道尔', 'Andorra', '安道爾', '欧洲'],
- ['AE', '阿联酋', 'United Arab Emirates', '阿聯', '亚洲'],
- ['AF', '阿富汗', 'Afghanistan', '阿富汗', '亚洲'],
- ...,
- ['ZA', '南非', 'South Africa', '南非', '非洲'],
- ['ZM', '赞比亚', 'Zambia', '尚比亞', '非洲'],
- ['ZW', '津巴布韦', 'Zimbabwe', '辛巴威', '非洲']], dtype=object)
- >>> data.describe
- <bound method NDFrame.describe of Code 国家和地区名 国家和地区名(英文) 国家和地区名(繁体) 大洲
- 0 AD 安道尔 Andorra 安道爾 欧洲
- 1 AE 阿联酋 United Arab Emirates 阿聯 亚洲
- 2 AF 阿富汗 Afghanistan 阿富汗 亚洲
- 3 AG 安提瓜和巴布达 Antigua and Barbuda 安地卡及巴布達 北美洲
- 4 AI 安圭拉 Anguilla 英屬安圭拉 北美洲
- 5 AL 阿尔巴尼亚 Albania 阿爾巴尼亞 欧洲
- 6 AM 亚美尼亚 Armenia 亞美尼亞 亚洲
- 7 AO 安哥拉 Angola 安哥拉 非洲
- 8 AQ 南极洲 Antarctica 南極洲 南极洲
- 9 AR 阿根廷 Argentina 阿根廷 南美洲
- 10 AS 美属萨摩亚 American Samoa 美屬薩摩亞 大洋洲
- 11 AT 奥地利 Austria 奧地利 欧洲
- 12 AU 澳大利亚 Australia 澳洲 大洋洲
- 13 AW 阿鲁巴 Aruba 阿魯巴 北美洲
- 14 AX 奥兰群岛 Åaland Islands 奧蘭群島 欧洲
- 15 AZ 阿塞拜疆 Azerbaijan 亞塞拜然 亚洲
- 16 BA 波黑 Bosnia and Herzegovina 波赫 欧洲
- 17 BB 巴巴多斯 Barbados 巴貝多 北美洲
- 18 BD 孟加拉国 Bangladesh 孟加拉 亚洲
- 19 BE 比利时 Belgium 比利時 欧洲
- 20 BF 布基纳法索 Burkina Faso 布吉納法索 非洲
- 21 BG 保加利亚 Bulgaria 保加利亞 欧洲
- 22 BH 巴林 Bahrain 巴林 亚洲
- 23 BI 布隆迪 Burundi 蒲隆地 非洲
- 24 BJ 贝宁 Benin 貝南 非洲
- 25 BL 圣巴泰勒米岛 Saint Barthélemy 聖巴瑟米 北美洲
- 26 BM 百慕大 Bermuda 百慕達 北美洲
- 27 BN 文莱 Brunei Darussalam 汶萊 亚洲
- 28 BO 玻利维亚 Bolivia, Plurinational 玻利維亞 南美洲
- 29 BQ 荷兰加勒比区 Bonaire, Sint Eustatius and Saba 荷蘭加勒比區 北美洲
- .. ... ... ... ... ...
- 221 TL 东帝汶 Timor-Leste 東帝汶 大洋洲
- 222 TM 土库曼斯坦 Turkmenistan 土庫曼 亚洲
- 223 TN 突尼斯 Tunisia 突尼西亞 非洲
- 224 TO 汤加 Tonga 東加 大洋洲
- 225 TR 土耳其 Turkey 土耳其 亚洲
- 226 TT 特立尼达和多巴哥 Trinidad and Tobago 特立尼達和多巴哥 北美洲
- 227 TV 图瓦卢 Tuvalu 吐瓦魯 大洋洲
- 228 TW 中国台湾 Taiwan, Province of China 中國台灣 亚洲
- 229 TZ 坦桑尼亚 Tanzania, United Republic of 坦尚尼亞 非洲
- 230 UA 乌克兰 Ukraine 烏克蘭 欧洲
- 231 UG 乌干达 Uganda 烏干達 非洲
- 232 UM 美国本土外小岛屿 United States Minor Outlying Islands 美國邊疆小島 大洋洲
- 233 US 美国 United States 美國 北美洲
- 234 UY 乌拉圭 Uruguay 烏拉圭 南美洲
- 235 UZ 乌兹别克斯坦 Uzbekistan 烏茲別克 亚洲
- 236 VA 梵蒂冈 Holy See (Vatican City State) 梵蒂岡 欧洲
- 237 VC 圣文森特和格林纳丁斯 Saint Vincent and the Grenadines 聖文森及格瑞那丁 北美洲
- 238 VE 委内瑞拉 Venezuela, Bolivarian Republic of 委內瑞拉 南美洲
- 239 VG 英属维尔京群岛 Virgin Islands, U.S. 英屬維爾京群島 北美洲
- 240 VI 美属维尔京群岛 United States Virgin Islands 美屬維爾京群島 北美洲
- 241 VN 越南 Vietnam 越南 亚洲
- 242 VU 瓦努阿图 Vanuatu 萬那杜 大洋洲
- 243 WF 瓦利斯和富图纳 Wallis and Futuna 沃里斯與伏塔那島 大洋洲
- 244 WS 萨摩亚 Samoa 薩摩亞 大洋洲
- 245 XK 科索沃 Kosovo 科索沃 欧洲
- 246 YE 也门 Yemen 葉門 亚洲
- 247 YT 马约特 Mayotte 美亞特 非洲
- 248 ZA 南非 South Africa 南非 非洲
- 249 ZM 赞比亚 Zambia 尚比亞 非洲
- 250 ZW 津巴布韦 Zimbabwe 辛巴威 非洲
-
- [251 rows x 5 columns]>
- >>> data.head(5)#前五列
- Code 国家和地区名 国家和地区名(英文) 国家和地区名(繁体) 大洲
- 0 AD 安道尔 Andorra 安道爾 欧洲
- 1 AE 阿联酋 United Arab Emirates 阿聯 亚洲
- 2 AF 阿富汗 Afghanistan 阿富汗 亚洲
- 3 AG 安提瓜和巴布达 Antigua and Barbuda 安地卡及巴布達 北美洲
- 4 AI 安圭拉 Anguilla 英屬安圭拉 北美洲
- >>> data.tail(5)#后五列
- Code 国家和地区名 国家和地区名(英文) 国家和地区名(繁体) 大洲
- 246 YE 也门 Yemen 葉門 亚洲
- 247 YT 马约特 Mayotte 美亞特 非洲
- 248 ZA 南非 South Africa 南非 非洲
- 249 ZM 赞比亚 Zambia 尚比亞 非洲
- 250 ZW 津巴布韦 Zimbabwe 辛巴威 非洲
- >>> data.Code#某一列
- 0 AD
- 1 AE
- 2 AF
- 3 AG
- 4 AI
- 5 AL
- 6 AM
- 7 AO
- 8 AQ
- 9 AR
- 10 AS
- 11 AT
- 12 AU
- 13 AW
- 14 AX
- 15 AZ
- 16 BA
- 17 BB
- 18 BD
- 19 BE
- 20 BF
- 21 BG
- 22 BH
- 23 BI
- 24 BJ
- 25 BL
- 26 BM
- 27 BN
- 28 BO
- 29 BQ
- ..
- 221 TL
- 222 TM
- 223 TN
- 224 TO
- 225 TR
- 226 TT
- 227 TV
- 228 TW
- 229 TZ
- 230 UA
- 231 UG
- 232 UM
- 233 US
- 234 UY
- 235 UZ
- 236 VA
- 237 VC
- 238 VE
- 239 VG
- 240 VI
- 241 VN
- 242 VU
- 243 WF
- 244 WS
- 245 XK
- 246 YE
- 247 YT
- 248 ZA
- 249 ZM
- 250 ZW
- Name: Code, Length: 251, dtype: object
- >>> data.size
- 1255
- >>> data.shape
- (251, 5)
- >>> data[2:4]
- Code 国家和地区名 国家和地区名(英文) 国家和地区名(繁体) 大洲
- 2 AF 阿富汗 Afghanistan 阿富汗 亚洲
- 3 AG 安提瓜和巴布达 Antigua and Barbuda 安地卡及巴布達 北美洲
- >>> data[2:4]#类似以索引切片
- Code 国家和地区名 国家和地区名(英文) 国家和地区名(繁体) 大洲
- 2 AF 阿富汗 Afghanistan 阿富汗 亚洲
- 3 AG 安提瓜和巴布达 Antigua and Barbuda 安地卡及巴布達 北美洲
- >>> data.loc[0:5,]#0到5行所有列
- Code 国家和地区名 国家和地区名(英文) 国家和地区名(繁体) 大洲
- 0 AD 安道尔 Andorra 安道爾 欧洲
- 1 AE 阿联酋 United Arab Emirates 阿聯 亚洲
- 2 AF 阿富汗 Afghanistan 阿富汗 亚洲
- 3 AG 安提瓜和巴布达 Antigua and Barbuda 安地卡及巴布達 北美洲
- 4 AI 安圭拉 Anguilla 英屬安圭拉 北美洲
- 5 AL 阿尔巴尼亚 Albania 阿爾巴尼亞 欧洲
- >>> data.loc[0:5,['Code','大洲']]0到5行,code列和大洲列
- Code 大洲
- 0 AD 欧洲
- 1 AE 亚洲
- 2 AF 亚洲
- 3 AG 北美洲
- 4 AI 北美洲
- 5 AL 欧洲
- >>> data.at[1,'大洲']#选择一个值
- '亚洲'
- >>> data.iloc[1:6,[0,2]]#注意iloc和loc的区别
- Code 国家和地区名(英文)
- 1 AE United Arab Emirates
- 2 AF Afghanistan
- 3 AG Antigua and Barbuda
- 4 AI Anguilla
- 5 AL Albania
- >>> data.iloc[1:6,[0,2]]
- Code 国家和地区名(英文)
- 1 AE United Arab Emirates
- 2 AF Afghanistan
- 3 AG Antigua and Barbuda
- 4 AI Anguilla
- 5 AL Albania
- >>> data.iloc[1:6,[0,1]]
- Code 国家和地区名
- 1 AE 阿联酋
- 2 AF 阿富汗
- 3 AG 安提瓜和巴布达
- 4 AI 安圭拉
- 5 AL 阿尔巴尼亚
- >>> data.iloc[1:6,0:2]
- Code 国家和地区名
- 1 AE 阿联酋
- 2 AF 阿富汗
- 3 AG 安提瓜和巴布达
- 4 AI 安圭拉
- 5 AL 阿尔巴尼亚
- >>> data.iat[1,2]
- 'United Arab Emirates'
- >>> data.ix[(data.index<5)&(data.大洲=='亚洲')]#条件判断
- Code 国家和地区名 国家和地区名(英文) 国家和地区名(繁体) 大洲
- 1 AE 阿联酋 United Arab Emirates 阿聯 亚洲
- 2 AF 阿富汗 Afghanistan 阿富汗 亚洲
- >>> data[data.大洲=='亚洲'].Code#条件查找
- 1 AE
- 2 AF
- 6 AM
- 15 AZ
- 18 BD
- 22 BH
- 27 BN
- 32 BT
- 38 CC
- 47 CN
- 53 CX
- 78 GE
- 94 HK
- 100 ID
- 102 IL
- 104 IN
- 105 IO
- 106 IQ
- 107 IR
- 112 JO
- 113 JP
- 115 KG
- 116 KH
- 120 KP
- 121 KR
- 122 KW
- 124 KZ
- 125 LA
- 126 LB
- 129 LK
- 145 MM
- 146 MN
- 147 MO
- 154 MV
- 157 MY
- 165 NK
- 168 NP
- 172 OM
- 177 PH
- 178 PK
- 183 PS
- 187 QA
- 193 SA
- 198 SG
- 212 SY
- 218 TH
- 219 TJ
- 222 TM
- 225 TR
- 228 TW
- 235 UZ
- 241 VN
- 246 YE
- Name: Code, dtype: object
- >>>DataFrame.某一列.mean()#求平均值
- >>> data['大洲'].value_counts()#计算大洲个数
- 非洲 58
- 亚洲 53
- 欧洲 53
- 北美洲 41
- 大洋洲 27
- 南美洲 14
- 南极洲 5
- Name: 大洲, dtype: int64
- >>> import numpy as np
- np.>>> np.sign(5)#大于0返回1,小于0返回-1,等于0返回0
- 1
- >>> np.sign(-0.25)
- -1.0
- >>> np.sign(0)
- 0
- >>> np.array([1,2,3,4,5,6])
- array([1, 2, 3, 4, 5, 6])
- >>> x = np.array([1,2,3,4,5,6])
- >>> np.diff(x)#返回后一元素与前一元素的差值
- array([1, 1, 1, 1, 1])
- >>> np.where(x>3)#两种调用方式
- (array([3, 4, 5]),)
- >>> np.where(x>3,1,0)
- array([0, 0, 0, 1, 1, 1])
- >>> DataFrame.sort_values(by='某一列',ascending=False)#针对某一列进行排序,False逆序True正序
有一个记录了爱吃苏式或广式月饼的用户DataFrame:
- >>> mooncakes_df
- name gender age taste of mooncake
- 0 Liuzi M 21 Cantonese-style
- 1 Huangqi F 32 Su-style
- 2 Yuanyuan F 35 Su-style
- 3 Duyue F 14 Cantonese-style
- 4 Zhangtian M 33 Cantonese-style
- 若要统计mooncakes_df中分别爱吃两种口味月饼的人数,可利用如下代码实现:
-
- >>> mooncakes_df.groupby("taste of mooncake").age.count()
- taste of mooncake
- Cantonese-style 3
- Su-style 2
- Name: age, dtype: int64
可见使用groupby()方法结合一些统计函数在做数据的分组统计时非常有用,另外,值得注意的是,groupby()还常常与apply()函数连用,apply()函数可将数据分拆、应用和汇总,使用自定义函数更灵活地进行各类数据统计。apply()函数的自由度很高,它的最基本形式为“DataFrame.apply(func, axis = 0)”,func是函数,可以自己实现,默认axis为0,表示apply()函数会自动遍历DataFrame的每一列数据(一个Series)按相应函数功能对其进行处理,处理结束后将所有结果组合后返回,若axis设为1则遍历处理DataFrame的每一行数据。例如前面的功能可通过如下代码实现:
- def f(df):
- return df.age.count()
- mooncakes_df.groupby('taste of mooncake').apply(f)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。